Ответы пользователя по тегу C
  • Правильно ли я все понимаю?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    include <stdio.h> // include - директива препроцессора/программа, которая копирует содержимое файла stdio.h

    Можно и так, но правильнее "инклюдит", то есть вставляет.

    int main(void) { // функция main, которая возвращает целочисленное значение. аргументов не принимает

    void означает, что тип аргументов не определен и необязателен. Они могут передаваться, и даже с ними можно работать. Просто при вызове функции можно передавать, можно не передавать, не вызывая ошибку.

    int x  = 10; // объявление переменной x, которой присваивается значение 10

    да, определение с присваиванием

    return 0; // возврат родительному процессу(операционная система/терминал). 0 - завершение без ошибок

    Да. В стандарте С при return из main функции автоматически вызывает exit с возвратом кода в ОС.
    Ответ написан
    4 комментария
  • Если я хорошо освою C, я смогу написать свою ОС под свою хотелку?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Чисто теоретически, вирус можно написать почти на чем угодно.
    Но важно понимать, что вирус заражает операционную систему, а не исходный код.
    Поэтому вам нужно разбираться как именно работает операционная система, чтобы ломать ее безопасность и пользоваться уязвимостями.
    Ответ написан
    Комментировать
  • В какой программе компилировать .с файлы для консоли?

    saboteur_kiev
    @saboteur_kiev Куратор тега Windows
    software engineer
    стандартный gcc можетгуглите кросс-компиляция.
    GCC это умеет
    Ответ написан
    Комментировать
  • По какой книге учить С?

    saboteur_kiev
    @saboteur_kiev Куратор тега Книги
    software engineer
    Лучшее - враг хорошего. Долго искать самую лучшую книгу нет смысла.
    Читайте любую книгу, а лучше 2-3 разные.

    И читая книгу будет недостаточно. Нужна практика, иначе все прочитанное вылетит из головы.

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

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    код плохо читаемый, потому что названия функций и переменных у вас плохо говорят для чего они используются.
    А фор - ну технически можно и так.
    Ответ написан
    Комментировать
  • Как в одном execl выполнить две команды?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    "ls file; rm -f file"
    "ls file && rm -f file"
    "ls file || rm -f file"

    смотря что вам нужно
    Ответ написан
  • Что писать на C в начале и конце пути?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    на Си не обязательно писать сложные проекты.
    Напишите на Си несклько консольных утилит.
    Например программа для вывода текстового файла на экран, вывода списка содержимого каталога.
    Затем что-то посложнее типа date с подстановочными символами, QR encoder, архиватор, да что угодно.

    А идеи для проектов подкидывать нет смысла, никто ж не знает что вам лично интересно настолько, чтобы заставить сделать проект и довести его до рабочего варианта.
    Ответ написан
    Комментировать
  • Что есть структура, а что оператор в C?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Конкретно в вашем случае, просто переводчики переводили не слово в слово, а по сути.
    В одном случае под "структурой", переводчик имел ввиду весь синтаксис оператора if, подразумевая, что после if следует условие в скобках, а затем в фигурных скобках блок команд, если условие успешно и так далее.

    В другой книге переводчик просто не называл это структурой, а сразу сказал что это синтаксис для оператора if.

    Другими словами, в вашем конкретном случае структура if и оператор if одно и тоже.
    Ответ написан
    3 комментария
  • Что это за символы?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Это условие, описанное при помощи тернарных операторов.

    Формат такой Условие ? Команда_если_true : Команда_если_false
    в вашем случае, если i < n/2, то вывести a[i+n/2], иначе a[i-n/2]
    Ответ написан
    Комментировать
  • Как заменить все гласные буквы на пробелы?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Вроде в С нет специальных кондиций для такого.

    Или множественный case или сделать массив из гласных и еще одним внутренним циклом прогонять.
    Ответ написан
    Комментировать
  • C помощью каких функций можно узнать информацию о системе?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Для Linux можно просто прочитать содержимое файлов /proc/cpuinfo и /proc/meminfo
    Ответ написан
    Комментировать
  • C - Как посимвольно обработать строку, введённую с клавиатуры?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Очень сложный код, куча лишних проверок.
    Но на первый взгляд, вы count не обнуляете после обрезания первой цифры
    Ответ написан
    1 комментарий
  • Почему игровые движки пишут на C++?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Движок от minecraft написан на java, можете видеть в чем разница с точки зрения возможностей.
    Основная проблема - работа с памятью, которая в более низкоуровневых языках типа с/c++ под контролем программиста, следовательно производительность предсказуема.
    Ответ написан
    Комментировать
  • Как реализовать алгоритм вывода дробной части числа в двоичной системе счисления на языке си?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В двоичной системе дробная часть не предусмотрена.
    Можете самостоятельно решить, сколько бит отдать на дробную часть, сколько на целую, и с этим работать.
    Ответ написан
  • Чем отличается динамическая библиотека от статической?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Подразумевается, что динамическая библиотека - уже есть в системе, и при запуске вашей программы библиотеку не нужно копировать вместе с вашей программой - необходимая (или совместимая) версия библиотеки уже будет доступна в системе.

    Статическая линковка - вы линкуетесь с конкретным файлом, и если копируете программу на другую машину, копируете и эту библиотеку вместе с исполняемым. С одной стороны у вас более надежно - точно заработает. С другой стороны - размер инсталлятора больше, если понадобилась статическая линковка - значит вы используете нестабильную/устаревшую библиотеку (это если мы говорим о системных библиотеках. Свои кастомные библиотеки можно линковать как вам удобно)
    Ответ написан
    3 комментария
  • Почему папка весит 0 байт?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    1. зависит от файловой системы.

    2. 0 байт вам показывает кто? Не каждая программа ковыряет на таком уровне, чтобы учитывать размер всего, где лежит информация про файл и про папку. Попробуйте другие программы. В Линуксе стандартный ls сразу будет показываьт, что папка занимает как минимум 1 блок (сейчас это обычно 4 кб).

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

    Вывод, пустая папка весит не 0 байт, но подобная информация не для пользователя, а для администратора, который учитывает занятое место специальными программами, с учетом понимания как устроена файловая система.
    Ответ написан
    Комментировать
  • Какие различия программирования под UNIX и Linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    что я прочитаю книгу по системному программированию в UNIX и смогу после этого программировать в Linux без изменений?


    Конечно нет. чтобы программировать в Линукс нужно не просто прочитать книгу по системному программированию, а научиться программировать. На практике.
    А тогда будет неважно на чем будете программировать.
    Ответ написан
    Комментировать
  • Почему выводит лишние символы?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Потому что printf выводит не ваш массив, а строку, которая должна заканчиваться символом '\0'
    Ответ написан
    Комментировать
  • Строка - образец (шаблон) в СИ - что это?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    rwxrwxrwx стандартный способ указания прав доступа в Posix системах (например Linux).
    буквы расшифровываются как "Read" "Write" "eXecute"
    три набора - первый владелец, второй группа - все остальные.
    таким образом rwxr-xr-x означает, что у владельца rwx (все права), у группы r-x, у остальных (кто не является владельцем и не входит в указанную групппу) r-x
    Ответ написан
  • Плохо ли смотреть готовый код задач по СИ, чтобы понять как это работает?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    "Плохо ли смотреть чужой рабочий код (с похожей задаче)"

    Плохо ли писать книги, если до этого никогда ничего не читал?
    Плохо ли снимать фильмы, если до этого никогда фильмы не смотрел?
    Плохо ли готовить, если до этого ел только сырое?

    Чужой опыт - это то, что дало человечеству цивилизацию.
    Ответ написан