Ответы пользователя по тегу C
  • Для чего нужны спецификаторы в C?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Описывает формат поля вывода, то есть в каком виде printf() должен напечатать аргумент. Спецификаторы могут быть довольно развесистыми - тут и выравнивание по границе (левая-правая), и символы заполнители и точность вывода...

    man printf(), все тут не перечислишь. Да и не так уж часто они и используются, но тем не менее знать про их наличие надо.
    Ответ написан
    Комментировать
  • Реализация memcmp без библиотек?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Берете исходник из libc, тащите себе в проект.
    Ответ написан
    Комментировать
  • Как улучшить код сравнения строк?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Ну посмотри уже исходник strcmp. Потому что у тебя если первая строка например "I love toster and spent here many hours" а вторая "I love toster" - то ты выхватываешь SIGSEGV, потому что первая строка еще идет, а вторая - уже кончилась (а для проверки условия завершения цикла нужно вычислить оба условия)
    Ответ написан
    2 комментария
  • Почему Массив символов не ровняется обычной строке?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Потому что так делать нельзя :)

    Это не перл, не питон и не любой другой язык с автоматическим управлением памятью. Это язык, где нужно явно указывать - что тебе надобно, старче.

    Вы сравниваете два указателя, то есть две переменные, содержащие адреса в куче. Разумеется, они будут разные.

    Для сравнения строк есть strcmp(), strncmp(), strcasecmp(), memcmp() и прочие подобные
    Ответ написан
  • Как реализован консольный ввод/вывод в C/C++?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Берется исходник libc, ищется реализация функции. Скорее всего будет несколько вложений функций друг в друга.
    Ответ написан
    Комментировать
  • Как скомпилировать .so файл в .c?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Я нашол .so файл и мне нужно скомпилировать в .c

    Чаво сделать-та? Эт типа "я нашел полкило фарша и мне надо получить обратно мясо, из которого он сделан"? Операция, обратная компиляции (а компиляция, чувак - это получение из исходного кода исполняемого модуля) - называется - внезапно - декомпиляцией. И она для .c файлов возможна в очень примитивной форме только в том случае, если в модуле "забыли" отладочную информацию. Во всех других случаях она попросту невозможна :D
    Ответ написан
    Комментировать
  • В чем причина этих ошибок и как это исправить?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Первое сообщение - переопределение обьекта file. Второе - предыдущее определение было здесь.
    Обычно такие вопросы кодом иллюстрируют.
    Ответ написан
    3 комментария
  • Где взять декомпилятор для Си?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Не бывает.

    Только в тех редких случаях, когда в программе почему-то сохранилась отладочная информация, можно составить приблизительное представление о коде. Если же там было простяцкоеgcc test.c -o test (или даже gcc -O2 test.c -o test) - усе, только дизассемблер.
    Ответ написан
    Комментировать
  • С чего начять новичку в СИ?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    С русского языка :) НачЯть писЯть правилно, да?
    Ответ написан
    9 комментариев
  • На чём создавать программы под Windows и прочие?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Если в программе предполагается гуй, то лучше всего будет использовать C++ - в C придется делать очень много черновой работы
    Ответ написан
  • Python vs C. Какой из них быстрее?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Или это миф, что C быстрее, чем Python?

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

    Жигули, КАМАЗ и Бентли - это все автомобили. Но они сделаны для разных вещей, и будут хороши в той вещи, для чего были сделаны и плохи в тех вещах, для чего их не предназначали
    Ответ написан
  • Ошибка с условными операторами c, как решить?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Тут целая куча ошибок, связанных с фундаментальным непониманием и тупой копипастой примеров.

    1. В С нет строкового сравнения, оператор if (petyasa == "petya") некорректен.
    2. scanf ("%d", &petyasya);
    введет код первого символа строки ('p' или 'v' в данном случае)

    Хотя конечно код можно сделать рабочим даже не сильно его поменяв - ведь вводится-то 'p' или 'v' :)

    #include <stdio.h>
    
    int main () {
       int petyasya;
    
       printf ("petya or vasya");
       scanf ("%d", &petyasya);
    
       if (petyasya == 'p'){
          printf("vasya luche!");
       }else if (petyasya == 'v');
         printf("llooll");
    
       return 0;
    }
    Ответ написан
  • Где взять math.h?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Вообще-то стандартная запись
    #include <math.h>
    Означает она инструкцию искать math.h в стандартных папках инклудов. А запись в кавычках означает "возьми из текущего каталога"
    Ответ написан
    Комментировать
  • Как сделать массив с указателями?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Обьем массива известен.
    Берем память

    float *fptr;
    fptr = (float *) calloc(sizeof(float*), MAX);

    И все :) Массив указателей на float есть :) Теперь перемещаемся по нему, заполняем (разумеется и под числа тоже место нужно), когда надо - перемещаемся и ищем. Обычная работа с массивом, только для счетчика нужно float* использовать - тогда при простом инкременте у тебя он будет автоматом прыгать на следующий элемент массива.
    Ответ написан
  • Что за функция swow?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Где стырил код - там же и ищи. Это может быть все, что угодно.
    Ответ написан
    Комментировать
  • Какой тип данных используется для чисел с фиксированной запятой на C?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    В С нет такого типа. Двоично-десятичный тип данных (он же "тип данных с фиксированной точкой") существовал в PL/1 (и, надо сказать поел мне немало мозгов при отладке программ вследствие своей крайней особливости при хранении в памяти).
    Ответ написан
    Комментировать
  • Почему не пишут сайты на языке Си?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Потому что очень сложно и очень долго.
    Ответ написан
    Комментировать
  • Хайп вокруг ЯП Rust и C?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Хайп вокруг ЯП Rust и C?

    Нет никакого хайпа. Кто писал на С - тот пишет и дальше. Кто хочет модно-стильно-молодежно - пишет на Rust
    ручное управление памятью, которое называют недостатком языка Си?

    Это не баг. Это фича (C)
    Это не недостаток языка. Это его достоинство. (Я сейчас конечно же про чистый С, а не про плюса). Языков с автоуправлением памятью - хоть #опой жуй. "Убивцев" С - тоже не меньше - появляются и исчезают, как пузыри, оставляя после себя неприятный запах...
    и не являются ли ошибки с памятью ошибками программиста,

    ошибки с памятью - это разумеется ошибки программиста. С - низкоуровневый язык, если кто-то не справляется с управлением памятью - пусть использует другие языки, где оно автоматическое.

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

    Нет конечно же, это же не тараканы :) их потравили в одной квартире - они "перераспределились" в другие
    Ответ написан
    Комментировать
  • Как исправить данные ошибки при компиляции?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    При линковке программы линкер не обнаружил среди указанных ему библиотек той, которая содержала бы перечисленные в ошибках функции, нужно подключить библиотеку

    (И, если это не преднамеренный стеб - переименовать учетку - как-то смешно выглядят элементарные вопросы от юзера с ником LinuxGod :ROFL: )
    Ответ написан
    Комментировать
  • Как собрать проект на Си в программу которая не требует перекомпиляции (что-то на подобие .exe) на ubuntu?

    CityCat4
    @CityCat4 Куратор тега C
    //COPY01 EXEC PGM=IEBGENER
    Собрать бинарник вестимо. Причем (я так понял, хотите продемонстрировать преподу?) - если не уверены, что на том месте есть все либы - собирать его надо статически - это сильно увеличит его размер, но даст возможность запустить на почти любом линухе
    Ответ написан