Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
jacuba4
0 / 0 / 1
Регистрация: 02.02.2011
Сообщений: 18
#1

Не происходит выход из цикла

02.02.2011, 06:53. Просмотров 1589. Ответов 4
Метки нет (Все метки)

Доброе время суток, давече сел за изучение С.
Возникла проблема, есть следующий код:
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
main()
{
    int c;
    while ((c = getchar()) != 0)
        {
            putchar(c);
        }
}
Как я понял изпрочитанного в книге - символы должны вводиться и выводиться до тех пор, пока не будет введен 0, после этого должен произойти выход из цикла.
Собственно выхода не происходит - я негодую. Прошу помощи, уважаемые.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2011, 06:53
Ответы с готовыми решениями:

Выход из цикла происходит раньше, чем предполагалось
#include&lt;iostream&gt; using namespace std; void main() { char...

Выход из цикла по Escape
Есть небольшой текст программы #define _CRT_SECURE_NO_WARNINGS...

Выход из цикла по нажатию клавиши
Возможно ли этот кусок кода приспособить к выходу из цикла не по воду -1 в m а...

Определить, произойдет ли выход из цикла
Приветствую форумчане! Недавно изучаю С, подскажите пожалуйста буду ли...

Выход из цикла нажатием на пробел
Ребята как выйти с циклу при помощи пробелу. Вот часть программы case'1': ...

4
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
02.02.2011, 06:59 #2
jacuba4, И не выйдет. И негодовать не стоит. getchar считывает символ. Вводим 0 - получаем аски-код 0, что есть 48...

Добавлено через 1 минуту
Вот так будет выходить из цикла.

C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main()
{
        int c;
        while ((c = getchar()) != '0')
                {
                        putchar(c);
                }
}
Return Value
The character read is returned as an int value.
If the End Of File is reached or a reading error happens, the function returns EOF and the corresponding error or eof indicator is set. You can use either ferror or feof to determine whether an error happened or the End-Of-File was reached.
0
solar_wind
761 / 752 / 58
Регистрация: 06.07.2009
Сообщений: 2,992
Завершенные тесты: 1
02.02.2011, 07:03 #3
Ну все правильно while ((c = getchar()) != 0) означает крутить цикл до тех пор пока операция присвоения не вернет 0....а она наверное никогда его не вернет...
тебе наверное так нужно while (c = getchar() != 0)

если я не ошибаюсь конечно...
0
jacuba4
0 / 0 / 1
Регистрация: 02.02.2011
Сообщений: 18
02.02.2011, 07:17  [ТС] #4
ForEveR, vitaly1981, спасибо.

Сделал как ForEveR. Работает, как надо.
0
accept
4833 / 3255 / 454
Регистрация: 10.12.2008
Сообщений: 10,569
03.02.2011, 07:17 #5
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C
1
while (c = getchar() != 0)
не, это неправильно, сначала выполнится операция проверки равенства, а потом её результат будет помещён в c (это всегда 0 или 1)

getchar(), кстати, может вернуть ноль
C
1
2
3
4
5
6
7
8
#include <stdio.h>
 
int main(void)
{
    if (getchar() == 0)
        printf("zero\n");
    return 0;    
}
Код
[guest@localhost tests]$ echo -e "\x00" | ./t
zero
[guest@localhost tests]$
2
03.02.2011, 07:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2011, 07:17

Подсчет дней в году(структура) - выход из цикла while
Добрый день!Спустя небольшое время решил возобновить изучение СИ,остановился на...

Как сделать выход из цикла While при нажатии клавиш Tab
Как сделать выход из цикла While(25-35 строки) при нажатии клавиш Tab и...

Выход из цикла при нахождении первого отрицательного числа массива
есть массив, в котором есть минимум 2 отрицательных числа надо найти первое и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru