[cdev] Утилита Echo
Grigoriy A. Sitkarev
sitkarev на komitex.ru
Пт Мар 19 00:34:50 MSK 2010
По оформлению - перечитайте и пересмотрите ещё раз пожалуйста LKCS, там
масса примеров как надо делать (и как НЕ надо - тоже есть). Не хочу
повторяться, а там всё есть. У вас не всё в порядке, надо выправить.
Программу тяжело читать, всё уплывает куда-то.
Дальше, по коду:
1. Есть глобальная переменная write_newline и локальная переменная в
main с таким же именем. У вас из-за этого неправильно обрабатывается
опция -n.
Комментарии в Си это предложения осмысленного текста между `/*' и `*/'.
Стиль `//' для однострочных комментариев gcc конечно понимает, но лучше
его не использовать.
2. В Unix принят несколько другой подход для подсказок. У вас утилита
наверное должна вывести нечто вроде:
Usage: echo [-n][-E][-e] string
Хотя некоторые GNU утилиты выводят подсказку в столбик, но в нашем
случае очень мало опций, поэтому столбика не надо.
Вообще Open Group спецификация не предусматривает никаких подсказок для
echo но мы делаем потому что мне надо заставить вас сделать пусть и
очень простую программу, но ОТ и ДО.
3. Почему вы не стали делать способ, как я вам подсказал?
argc -= optind;
argv += optind;
Очень просто всё будет. Вы этого не делаете, поэтому у вас у функции
do_echo три (!!!) аргумента. Ей достаточно передавать всего два - argc и
argv.
4. При компиляции с -Wall много предупреждений. Их все надо поправить.
Если у вас не включен этот флаг, то в KDevelop это легко сделать. В
automake менеджере на каталог src (скорее всего у вас он так называется)
вызвать контекстное меню, выбрать "Параметры" далее
"Компилятор->Параметры компилятора" C (CFLAGS): и туда вписать -Wall.
После чего при компиляции будет перезапущен automake/autoconf.
Ну или проверяйте с командной строки запуская компилятор с -Wall опцией.
Он вам всё скажет, где ему чего не нравится.
--
Г.А.
Карабанова Елена пишет:
> Здравствуйте
>
> Я упростила код, спасибо за подсказку и написала, чтобы выводилась справка, если была введена неправильная опция.
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> cdev mailing list
> cdev на wiki.syktsu.ru
> http://wiki.syktsu.ru/cgi-bin/mailman/listinfo/cdev
Подробная информация о списке рассылки cdev