[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