Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Shampe
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 4
#1

printf не выводи данные вне цикла. - C++

10.01.2011, 10:35. Просмотров 849. Ответов 5
Метки нет (Все метки)

Здравствуйте!
Проблема состоит в том,что если printf стоит внутри какого-нибудь цикла,то данные выводятся нормально,но если этот printf перенести за пределы цикла,то информация по каким-то причинам не выводится.Причем пробовал запускать как в терминале так и в ide(code-blocks).

Вот примеры:
Так работает и все выводится,но,как вы понимаете,такой вывод неприемлем.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int main() {
    int nc,c;
    nc=c=0;
    while ((c=getchar()) != EOF){
    if (c=='\n')
          nc++;
    printf("%d\n", nc);
    }
    return 0;
}
А вот так уже ничего не выводится
C++
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
int main() {
    int nc,c;
    nc=c=0;
    while ((c=getchar()) != EOF)
    if (c=='\n')
          nc++;
    printf("%d\n", nc);
    return 0;
}
Подскажите,пожалуйста,что делаю не так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2011, 10:35     printf не выводи данные вне цикла.
Посмотрите здесь:

Как использовать данные из цикла вне его - C++
Уважаемые модераторы прошу удалит предыдущую тему. Так как я изучаю программирование самостоятельно часто появляются вопросы на...

Вне зависимости от значения k, в консоль выводить двузначное число через printf() - C++
нужно чтобы вне зависимости от значения k, в консоль выводилось 2знчное число. Например int k=30; printf(&quot;%i'&quot;, k); вывод: 30 ...

Вывод результата вне цикла - C++
Написать программу, вычисляющую НОД (наибольший общий делитель) двух целых чисел Все работает,только вывод надо сделать вне цикла....

В каком месте использовать конструктор - вне цикла или в цикле? - C++
Добрый день! Как писать правильнее? Ниже два примера: QStringList data; foreach(const QString &amp;category, categories) { data...

Выводи лишних символов в файл - C++
Не знаю почему, но в файл печатаются лишнbе символы 'H', а на экран нормально всё выводится. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

Для каждой строки матрицы подсчитать сумму элементов, вне заданного интервала, записать данные в новый массив - C++
Дан массив размером n×n, элементы которого целые числа. Замечание. Для хранения массив n×n использовать ступенчатый массив. Для...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт CЭксперт С++
9461 / 5474 / 927
Регистрация: 25.07.2009
Сообщений: 10,498
10.01.2011, 10:57     printf не выводи данные вне цикла. #2
Цитата Сообщение от Shampe Посмотреть сообщение
А вот так уже ничего не выводится
странно, у меня всё нормально отработало:
Код
C:\cpp\strings>cl nccnt.c
Оптимизирующий 32-разрядный компилятор Microsoft (R) C/C++ версии 16.00.30319.01
 для 80x86
(C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.

nccnt.c
Microsoft (R) Incremental Linker Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:nccnt.exe
nccnt.obj

C:\cpp\strings>nccnt.exe
bla bla bla
bla bla bla
bla bla bla
^Z
3

C:\cpp\strings>type nccnt.c
#include <stdio.h>
int main() {
    int nc,c;
    nc=c=0;
    while ((c=getchar()) != EOF)
    if (c=='\n')
          nc++;
    printf("%d\n", nc);
    return 0;
}

C:\cpp\strings>
Shampe
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 4
10.01.2011, 11:22  [ТС]     printf не выводи данные вне цикла. #3
у меня вывод от первого варианта(printf внутри цикла) такой:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
shampe@shampe:~/C$ cat hello.c
#include <stdio.h>
int main() {
int nc, c;
nc=c=0;
while ((c=getchar()) != EOF){
if (c=='\n')
nc++;
printf("%d", nc);
}
return 0;
}
shampe@shampe:~/C$ gcc hello.c
shampe@shampe:~/C$ ./a.out 
bla bla bla
000000000001^C
а во втором случае(printf вне цикла),такой:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
shampe@shampe:~/C$ cat hello.c
#include <stdio.h>
int main() {
int nc, c;
nc=c=0;
while ((c=getchar()) != EOF){
if (c=='\n')
nc++;
}
printf("%d", nc);
return 0;
}
shampe@shampe:~/C$ gcc hello.c
shampe@shampe:~/C$ ./a.out 
bla bla bla
^C
Т.е. не выводится вообще ничего.
easybudda
Эксперт CЭксперт С++
9461 / 5474 / 927
Регистрация: 25.07.2009
Сообщений: 10,498
10.01.2011, 11:26     printf не выводи данные вне цикла. #4
Цитата Сообщение от Shampe Посмотреть сообщение
Т.е. не выводится вообще ничего.
После того, как последнюю строку ввели и enter нажали, Ctrl D не пробовали нажимать?
Shampe
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 4
10.01.2011, 11:47  [ТС]     printf не выводи данные вне цикла. #5
Цитата Сообщение от easybudda Посмотреть сообщение
После того, как последнюю строку ввели и enter нажали, Ctrl D не пробовали нажимать?
Нет,не пробовал
Не могли бы Вы объяснить,что делает ctrl-d?

Добавлено через 13 минут
Цитата Сообщение от Shampe Посмотреть сообщение
Нет,не пробовал
Не могли бы Вы объяснить,что делает ctrl-d?
Извиняюсь - виндовая привычка,спрашивать не погуглив

Но появился следующий вопрос: почему ctrl-d не нужен,если printf внутри цикла,но нужен тогда,когда printf вне цикла?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2011, 13:25     printf не выводи данные вне цикла.
Еще ссылки по теме:

округление printf("%.4f", (float) ans ); и printf("%.4lf", ans ); - C++
printf(&quot;%.4f&quot;, (float) ans ); printf(&quot;%.4lf&quot;, ans ); вроде по моему пониманию мы должны на выходе получать одно и то же (анс в начале...

Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. - C++
Применяя оператор цикла FOR вычислить y. Оператор if в теле цикла не использовать. Значение m и n вводить с клавиатуры. Шаг изменения...

Printf - C++
Добрый день! У меня возник вопрос: st = 100.0*mas/m ; printf(&quot;%.2f\n&quot;,st); нужно чтобы после &quot;st&quot; выводил знак процента. ...

printf(); - C++
printf(&quot;И : %s &quot;,argv); в цикле вывожу параметры которые задал в консоле, но вместо строки выводит лишь один символ. К примеру :...


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

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт CЭксперт С++
9461 / 5474 / 927
Регистрация: 25.07.2009
Сообщений: 10,498
10.01.2011, 13:25     printf не выводи данные вне цикла. #6
Цитата Сообщение от Shampe Посмотреть сообщение
почему ctrl-d не нужен,если printf внутри цикла,но нужен тогда,когда printf вне цикла?
Потому, что внутри цикла при каждой итерации выводится текущее значение переменной-счётчика, а вне цикла вывод отрабатывает, когда очередная попытка чтения вернёт EOF (что собственно и происходит после нажатия Ctrl D)...
Yandex
Объявления
10.01.2011, 13:25     printf не выводи данные вне цикла.
Ответ Создать тему
Опции темы

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