Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Проблема с программкой на С  (Прочитано 639 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kotofey

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Проблема с программкой на С
« : 16 Августа 2010, 16:48:30 »
В общем, решил скомпилить программку на С. 
Программа должна всего лишь копировать  входной поток в выходной по одному символу, то есть, тупо копировать введённые мной символы и выводить их на экран до тех пор, пока я не введу значение EOF,  что, вроде бы, являеться -1.

вот код:


                           

#include <stdio.h>
main()
{
int c;
c=getchar();
while (c!=EOF) {
putchar(c);
c=getchar();
}
}



Программа компилится и работает, но не прекращает работу даже после того, как я введу -1.  На всякий случай написал программу, прекращающую работу при вводе числа 3. вот код:

  GNU nano 2.2.2          Файл: 10.c                         

#include <stdio.h>
main()
{
int c;
c=getchar();
while (c!=3) {
putchar(c);
c=getchar();
}
}



Тот же результат... программа, при вводе "3", делает то же, что и со всеми остальными символами - копирует в выходной поток. так,  как будто я и не писал условия  (c!=3)...  В чём причина? Я что то совсем неправильно сделал?
 

Оффлайн VestniK

  • Активист
  • *
  • Сообщений: 594
    • Просмотр профиля
Re: Проблема с программкой на С
« Ответ #1 : 16 Августа 2010, 17:03:33 »
EOF это не -1. Символа EOF не существует. Обрати внимание что getchar возвращает int, а не char это потому что помимо прочитанного символа эта функция должна умет возвращать служебную информацию о состоянии входного потока. Собственно чтобы послать EOF своей программе тебе нужно закрыть stdin это можно сделать нажав Ctrl+D.

По поводу 3ки замени
while (c!=3) {
на
while (c!=(int)'3') {

Обрати внимание, что символ '3' имеет код в таблице символов отнюдь не равный числу 3.

Оффлайн kotofey

  • Автор темы
  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Re: Проблема с программкой на С
« Ответ #2 : 16 Августа 2010, 17:08:10 »
Спасибо большое! теперь всё работает 8)

 

Страница сгенерирована за 0.088 секунд. Запросов: 27.