[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