Книга: Язык Си - руководство для начинающих
Проверка
Проверка
Так ли уж правильны наши рассуждения? Давайте проверим нашу функцию на учебной программе:
/* проверка функции getint( )*/
#define STOP - 1
#define NONUM 1
#define YESNUM 0
main( )
{
int num, status;
printf(" Программа прекращает считывание чисел, если встречает EOF. n" );
while((status = getint(&num)) != STOP)
if(status = = YESNUM)
printf(" Число %d принято. n", num);
else
printf(" Это не целое число! Попытайтесь снова. n");
printf("Этo оно. n");
}
Вот пример работы программы:
Программа прекращает считывание чисел, если встречает EOF.
100 -23
Число 100 принято.
Чмсло -23 принято.
+892.
Число 892 принято.
wonk
Это не целое число! Попытайтесь снова.
23skidoo
Это не целое число! Попытайтесь снова.
775
Число 775 принято.
Клавиша [control z] (посылает символ EOF в нашу программу).
Это оно.
Как видите, программа выполняется. Обратите внимание на то, как мы сумели организовать цикл для неограниченного считывания целых чисел до тех пор, пока не будет введен символ EOF. Это удобное свойство.
Есть ли здесь ошибки? По меньшей мере одна. Если непосредственно за числом следует символ EOF без разделяющего пробела или символа новой строки, ввод прекращается, и это число не принимается во внимание:
706 EOF /* 706 принято*/
706 EOF /* 706 не принято*/
Мы не хотели делать пример слишком сложным, поэтому допустили возможность этой ошибки. Дальнейшую разработку программы, как мы думаем, может осуществить сам читатель в качестве упражнения.
- 5. Null-значения и проверка условий
- 12.1. Автоматизированная проверка безопасности
- 12.3. Проверка конфигурации
- Проверка, что сервер Firebird запущен
- Проверка на вирусы с помощью сканера Dr.Web
- Проверка правописания
- Проверка и ремонт
- Проверка диска на наличие ошибок
- 11.1. Проверка прав доступа
- 11.3. Проверка для действительного пользователя: access()
- 11.4. Проверка для эффективного пользователя: euidaccess() (GLIBC)
- Проверка эквивалентности