• Почему данный код не срабатывает?

    wisgest
    @wisgest
    Не ИТ-специалист
    Массив в выражении является указателем на свой 0-й элемент. Это то же самое, если бы в условии было &Name[0] == &Surname[0] — указатели указывают на разные адреса.
    Ответ написан
    Комментировать
  • Почему данный код не срабатывает?

    @vanyamba-electronics
    #include <string.h>
    ...
    if (strcmp(Name, Surname) == 0) {
        ....
    }
    Ответ написан
    Комментировать
  • Как перевести код из Linux в Windows?

    tsarevfs
    @tsarevfs
    C++ developer
    Работа с файлами под linux и windows происходит разными способами. Ищите примеры для WinAPI:
    https://docs.microsoft.com/en-us/windows/win32/api...

    Кроссплатформенное решение будет иметь 2 набора функций под ifdef директивами.

    Если нужно просто запустить это на компьютере с виндой, то есть виртуальные машины или WSL. Тогда можно ничего не переписывать, а работать в linux окружении под windows.
    Ответ написан
    Комментировать
  • Как считать строку с файла и проверить ее на наличие нужных символов (Си)?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    Ну, примерно так:
    - открыть файл, считать в буфер, закрыть файл
    - цикл построчного разбора (по символу '\n')
    Я так понимаю - нужно проверить на наличие комбинации "0.[0-9]"? (то есть "0." и дальше любая цифра). Тогда самый простой способ strstr() с поиском строки "0." Не нашли - ошибка, образец не найден. Если нашли - проверяем, что следующий символ попал в диапазон 0x30 - 0x39 ('0' - '9'). Если нашли - гуд, не нашли, ошибка, образец не найден.
    Ответ написан
    Комментировать
  • Как объяснить записи оператора if?

    @res2001
    Developer, ex-admin
    Cicici,
    Можно ли сказать что в первом случае if(x) будет истиной, если x не равно 0?

    Именно так.
    Второе выражение математически верно, но в программировании так не пишется. Хотя компилятор это прожует (см. ответ wisgest ), но результат выражения будет не тот, какой ожидается от математического выражения.
    Правильная запись:
    if (0 < x && x < 10)
    Ответ написан
    1 комментарий
  • Сколько ячеек памяти будет занято при инициализации указателя адресом литерала?

    bingo347
    @bingo347
    Crazy on performance...
    Во-первых, 1 ячейка памяти всегда имеет 1 фиксированный размер - машинное слово (на 64 битной архитектуре это будет 8 байт).
    Во-вторых, компилятор си достаточно умный, что бы понимать, что сложные структуры данных вроде массивов и структур могут хранить все свои данные в 1 ячейке памяти, хотя могут и состоять из элементов меньше машинного слова. Но при этом данные относящиеся к разным структурам будут записаны в разные ячейки, даже если где-то окажется пустота.
    В-третьих, массивы в си всего лишь сахар над указателями и арифметикой над указателями.
    В-четвертых, не забываем, что сам указатель занимает машинное слово.

    Отсюда делаем вывод, что оба представленных выражения полностью идентичны и оба займут 2 ячейки памяти, так как char занимает 1 байт, а массив из 6 char (5 букв и \0 символ) вполне влазит в 1 машинное слово, а указатель всегда имеет размер машинного слова. Вот если бы в строке было 8 символов (и последний не \0 символ), то понадобилось бы уже 3 ячейки памяти.
    Ответ написан
    1 комментарий
  • Как передать текст через командную строку в Си?

    myjcom
    @myjcom
    https://en.cppreference.com/w/c/language/main_function
    #include<stdio.h>
    int main(int argc, char* argv[])
    {
      if(argc > 0)
      {
        for(int i = 0; i != argc; ++i)
           printf("%s\n", argv[i]);
      }
    }

    argv[0] = имя программы, далее по порядку аргументы 1, 2, 3 ... , argc --> argv[1], argv[2], ... , argv[argc]
    Ответ написан
    1 комментарий
  • Как побороть ошибку /usr/bin/ld: cannot find -lcrypto при компиляции?

    Chvalov
    @Chvalov Автор вопроса
    sudo apt-get install libssl-dev libcrypto++-dev
    Ответ написан
    Комментировать
  • Как записать данные в переменную?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!
    А почему должно? Это С, не С++, не перл, где существуют самые дикие конструкции. Здесь все просто как полено :)
    char domen[100];
    char stroka = "В чащах юга жил бы цитрус";
    
    strcpy(domen, stroka);

    Оператор sizeof возвращает длину типа. Вам он вернет 1, потому что длина типа char - 1 байт :)
    Если хотите сформировать одну длинную строку - то индекс можно вычислять, но если слева стоит что-то типа domen[N], то справа может быть только литерал. Для записи в массив строки с определенной позиции нужно использовать все то же strcpy()
    Ответ написан
    4 комментария
  • Пустые круглые скобки у функции main() это нормально?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Плохо учили. Писать void при отсутствии аргументов - анахронизм, тянущийся с конца 80х.
    Ответ написан
    6 комментариев
  • Можно ли сделать приведение числа записав его в скобку?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Нет. Правильный такой:
    x = (float) 7/4;
    Ответ написан
    Комментировать
  • Почему прямоугольник не является экземпляром класса квадрата?

    @majstar_Zubr
    C++, C#, gamedev
    Дело в том, что в объектно ориентированном программировании обобщаются не понятия, а определённый набор функций, которые совокупно описывают/осуществляют модификацию каких-то логически связанных данных.

    В реализации графического редактора действительно приходишь к выводу, что квадрат и прямоугольник, с точки зрения данных и функционала абсолютно разные - почти все функции, которые не относятся ко всем четерёхугольникам, имеют разные сигнатуры. А все потому, что у квадрата лишь одна сторона. Например, площадь - для метода рассчёта площади квадрата нужен один параметр, а для прямоугольника - два.

    С точки зрения ООП, наследование - это перенятие функциональности, но в случае с прямоугольником и квадратом перенятия функциональности нет, потому что площадь прямоугольника по одной стороне нельзя посчитать, а у квадрата нет второй стороны.

    Ромб от квадрата отличается тем, что у квадрат задаётся 1 углом, а ромб двумя.

    Эллипс от окружности тоже отличается сильно, просто окружность в графическом представлении есть частный случай определенной конфигурации данных, которые описывают эллипс. Но. Графическое представление - это уже за пределами ООП.

    ООП - инструмент для программирования в первую очередь, все сущности представляются относительно минимально необходимого обобщения поведения.

    Для площадей, для отрисовки диагоналей и прочих многих функций у квадрата и прямоугольника будут разные сигнатуры и в принципе разные поля, что значит, это разные классы.

    Единственное что у них общее - они оба выпуклые прямоугольники, их можно вписать в окружность. Но если вы не собираетесь реализовывать для своего графического редактора поворот, вписывание в окружность, то не будет у вас причин вводить класс для выпуклых четерёхугольников в принципе.
    Ответ написан
    Комментировать
  • Как в двумерном массиве удалить строку/столбец, на чистом С?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Никак. Массив - это структура данных фиксированного размера, какого размера объявлен, таким всегда и будет. Остаётся либо заполнять ненужные ячейки данными условно обозначающими ничто, либо объявлять массив меньшей размерности и копировать в него необходимую часть данных.
    Ответ написан
    2 комментария