Если gcc ничего не вернул, то компиляция прошла успешно. А вот в самой программе ошибки скорее всего будут. Вы её хоть пробовали запустить?
Кто ищет, тот всегда найдет!
Опыт — это когда все получается с первого раза.
Спасибо сказали:
Фантом Сообщения: 440 ОС: openSUSE
Re: Проверьте программу на Си
Сообщение Фантом » 15.08.2012 00:05
Вполне нормально. Только зачем нужны два последних #include (один из которых повторяет уже имеющийся) и зачем указывать при компиляции C99 (и совершенно не использовать его в самой программе)?
Спасибо сказали:
unixlike Сообщения: 14
Re: Проверьте программу на Си
Сообщение unixlike » 15.08.2012 10:03
Вы её хоть пробовали запустить?
да, работает как бы нормально, сравнение оригинала с копией cmp говорит ОК.
Только зачем нужны два последних #include (один из которых повторяет уже имеющийся) и зачем указывать при компиляции C99
повторение #include ошибка — перестарался
Язык Си: компиляция в Visual Studio Code ПРОСТО
а #include чтоб не было варниннгов при компиляции с флагом -std=c99 без unistd.h gcc ругался.
ну и c99 указал для более строгой проверки формальной корректности кода или это не поможет?
Спасибо сказали:
Janik Сообщения: 838 Статус: Оператор вычислительных машин ОС: Debian
Re: Проверьте программу на Си
Сообщение Janik » 15.08.2012 10:50
По-умолчанию используется старый стандарт, вроде как.
Поправте, если заблуждаюсь
Кто ищет, тот всегда найдет!
Опыт — это когда все получается с первого раза.
Спасибо сказали:
drBatty Сообщения: 8735 Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит. ОС: Slackware-current Контактная информация:
Re: Проверьте программу на Си
Сообщение drBatty » 15.08.2012 10:51
14.08.2012 19:40
проверьте все ли там правильно.
форматирование сделайте нормальное. так не видно.
Скоро придёт
Осень
Спасибо сказали:
Janik Сообщения: 838 Статус: Оператор вычислительных машин ОС: Debian
Re: Проверьте программу на Си
Сообщение Janik » 15.08.2012 10:59
Кстати, можно проверить программу на то, как она обрабатывает неправильные аргументы или ситуации.
Кто ищет, тот всегда найдет!
Опыт — это когда все получается с первого раза.
Спасибо сказали:
unixlike Сообщения: 14
Re: Проверьте программу на Си
Сообщение unixlike » 15.08.2012 13:56
форматирование сделайте нормальное. так не видно.
нормальное это как?
Я кстати похоже нашел логические ошибки. Неправильно же сразу exit(1); везде ставить, нужно открытые файлы закрыть сначала.
И еще такой момент, первое копирование 200Мб файла на тот же диск примерно 5 сек, это нормально. А вот повторное 1.2-1.6 сек явно не реально. Чтение с диска макс. 87Мб/сек. Добавлял sync() в программу время повторного копирования не изменилось.
Может потому что sync() ничего не возвращает и программа не ждет результата.
Тогда как гарантированно сбросить данные на диск до закрытия программы?
Напишите программу, проверяющую число, введенное с клавиатуры на четность. Домашнее задание. C++ #2.
Спасибо сказали:
unixlike Сообщения: 14
Re: Проверьте программу на Си
Сообщение unixlike » 15.08.2012 15:17
Вот прогнал через форматирование:
#include #include #include #include #define BUFFER_SIZE 4096 int main(int argc, char *argv[]) < int finput1, foutput2, closef1, closef2; int read_bytes; char buffer[BUFFER_SIZE + 1]; if (argc < 3) < fprintf(stderr, «Lack of argumentsn»); exit(1); >finput1 = open(argv[1], O_RDONLY); if (finput1 < 0) < fprintf(stderr, «Cannot open file-Readn»); exit(1); >foutput2 = open(argv[2], O_WRONLY | O_CREAT | O_EXCL, 0600); if (foutput2 < 0) < fprintf(stderr, «Cannot open file-Writen»); exit(1); >while ((read_bytes = read(finput1, buffer, BUFFER_SIZE)) > 0) < write(foutput2, buffer, read_bytes); >if (read_bytes < 0) < fprintf(stderr, «cp: Cannot read filen»); exit(1); >closef1 = close(finput1); if (closef1 < 0) < fprintf(stderr, «Cannot close file-Readn»); exit(1); >closef2 = close(foutput2); if (closef2 < 0) < fprintf(stderr, «Cannot close file-Writen»); exit(1); >exit(0); >
Источник: unixforum.org
Онлайн-компилятор «Си»: выбираем лучший компилятор для C
Рано или поздно при написании программ разработчики сталкиваются с тем, что нужно быстро проверить код . Однако далеко не всегда для этого надо запускать сложные прикладные программы и ресурсоёмкие десктопные IDE, тем более, если речь идёт о людях, которые только начинают изучать программирование. Решить проблему поможет специальная online-программа — компилятор .
В этой статье вы найдете подборку лучших онлайн-компиляторов . Почти все они универсальны. Многие поддерживают не только язык программирования C, но и массу других языков. Итак, встречайте лучшие компиляторы для online-использования!
IdeOne
IdeOne — компилятор и инструмент отладки, позволяющий прямо в браузере выполнять код. Поддерживает десятки языков, включая их конкретные версии. Возможна даже компиляция на Brainfuck .
Приложение позволяет настраивать лимиты времени, указывать данные для стандартного ввода, добавлять описание кода, делиться им с коллегами и друзьями, которые, в свою очередь, смогут делать форк исходного материала через удобный интерфейс. Вдобавок ко всему, вы легко вставите сохранённый код на сайт посредством специального виджета.
Koding
В принципе, Koding.com это не online-компилятор в привычном смысле. Он позволяет создавать в облаке полноценные виртуальные машины под управлением Ubuntu , а на них уже можно делать всё, что заблагорассудится, включая компилирование кода . Есть панель управления своим сервером и окошко терминала. Доступна удобная IDE в интерфейсе.
JDoodle
Это приложение поддерживает много языков, среди которых есть те, которые вы не найдёте во многих других инструментах для компиляции . Приятная особенность JDoodle — возможность совместной работы с другом или с коллегой. Для этого достаточно отправить ссылку на текущую сессию, после чего можно разрабатывать приложения с удвоенной скоростью!
CodePad
Говорят, что быстрее и лучше работается с минималистичным сервисом. CodePad — именно таковым и является. Он простой и абсолютно нересурсоёмкий, поэтому сайт будет хорошо работать даже при медленной скорости вашего интернета. Вдобавок ко всему, предусмотрены такие «плюшки», как интеграция с Vim либо Emacs и автоподключение стандартных заголовков.
Платформа поддерживает наиболее распространённые языки программирования . Правда, выбрать конкретную версию интерпретатора не удастся. Очередной минус, который ухудшает данную программу, — отсутствие подсветки синтаксиса во время ввода кода в форму. Впрочем, после сохранения записи подсветка будет присутствовать при просмотре, что несколько улучшает ситуацию.
GCC GodBolt
GCC GodBolt — популярный интерактивный онлайн-compiler исключительно для С++ . Имеет простейший интерфейс и много настроек, включая опции, регулируемые с помощью ключей. Доступен выбор среди разных версий. Интересная особенность компилятора — возможность моментального перевода кода программы непосредственно на язык ассемблера.
А какой компилятор используете вы? Пишите в комментариях !
Материал подготовлен для студентов курса «Разработчик C++». Не забудьте пройти вступительное тестирование для записи на курс:
Источник: dzen.ru
Программа на Си для проверки числа: положительное или отрицательное
Проверять, является ли число (введенное пользователем) отрицательным или положительным.
Какие нужны знания для понимания этой программы?
Потребуются знания по следующим темам на языке Си:
- Понятие об операторах.
- Оператор if…else.
Работа программы
Эта программа принимает от пользователя число и проверяет, является ли оно положительным, отрицательным или нулем.
Ноль или отрицательное — структура if else
Блок-схема
Объяснение программы
#include int main() < double num;
Сначала передается #include .
Директива #include сообщает препроцессору на Си о необходимости включения в компилятор содержимого файла, указанного во входном потоке, а затем продолжения работы с остальной частью исходного файла. Заголовочный файл может содержать любой валидный фрагмент программы на Си.
Заголовочный файл stdio.h расшифровывается как “standard input output” («стандартный ввод/вывод»). В нем содержится информация, связанная с функциями ввода/вывода. Вот описание некоторых функций в stdio :
int main()
« int main » означает, что функция должна в конце выполнения вернуть какое-то целое число. При этом в конце программы возвращается 0, свидетельствуя об «успешном выполнении программы». В C89 main не указывался, а тип возвращаемого значения по умолчанию был int.
double num;
« double » — это тоже тип данных, который используется для представления чисел с плавающей запятой. Это 64-хбитный формат представления числа с плавающей запятой двойной точности, определяемый стандартом IEEE 754 для значения. Точность этого числа составляет 15 десятичных знаков.
printf(«Enter a number: «); scanf(«%lf»,
- Функция printf выводит инструкцию Enter a number («введите число»).
- В функции scanf для типа данных double используется %lf .
if (num
Здесь задействован вложенный оператор if . Вложенный If в языке программирования Си означает оператор If , помещенный внутрь другого оператора If . Вложенный If применяется на Си, когда нужно проверить условие внутри другого условия.
Было введено число 0.0, и в этом случае выводится you entered 0 («вы ввели 0»).
else printf(«You entered a negative number.»); > else printf(«You entered a positive number.»); return 0;
В этих строчках использован оператор else . Потому что, если бы было введено меньше 0.0, оператор else вывел бы you entered a negative number («вы ввели отрицательное число»).
Дальше идет второй оператор else , в случае если бы не было введено 0.0 или меньше 0.0. Тогда он вывел бы you entered a positive number («вы ввели положительное число»).
return 0 в функции main означает, что программа выполнена успешно.
Программа / исходный код с использованием «if….. else»
#include int main() < double num; printf(«Enter a number: «); scanf(«%lf», if (num else printf(«You entered a positive number.»); return 0; >
Вывод:
Та же задача решается с помощью вложенного оператора « if else »:
#include int main() < double num; printf(«Enter a number: «); scanf(«%lf», if (num < 0.0) printf(«You entered a negative number.»); else if (num >0.0) printf(«You entered a positive number.»); else printf(«You entered 0.»); return 0; >
Вывод:
- Как сделать калькулятор на C
- Перестановка двух чисел на Си
- Для чего нужен указатель в Си?
Источник: nuancesprog.ru