Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

10.01.2011, 10:35. Просмотров 859. Ответов 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;
}
Подскажите,пожалуйста,что делаю не так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2011, 10:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос printf не выводи данные вне цикла. (C++):

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

вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного цикла и что бы все printf были только в теле цикла - C++
вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного цикла и что бы все printf были только в теле...

Вне зависимости от значения 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; ...

5
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
10.01.2011, 10:57 #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>
1
Shampe
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 4
10.01.2011, 11:22  [ТС] #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
Т.е. не выводится вообще ничего.
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
10.01.2011, 11:26 #4
Цитата Сообщение от Shampe Посмотреть сообщение
Т.е. не выводится вообще ничего.
После того, как последнюю строку ввели и enter нажали, Ctrl D не пробовали нажимать?
1
Shampe
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 4
10.01.2011, 11:47  [ТС] #5
Цитата Сообщение от easybudda Посмотреть сообщение
После того, как последнюю строку ввели и enter нажали, Ctrl D не пробовали нажимать?
Нет,не пробовал
Не могли бы Вы объяснить,что делает ctrl-d?

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

Но появился следующий вопрос: почему ctrl-d не нужен,если printf внутри цикла,но нужен тогда,когда printf вне цикла?
0
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
10.01.2011, 13:25 #6
Цитата Сообщение от Shampe Посмотреть сообщение
почему ctrl-d не нужен,если printf внутри цикла,но нужен тогда,когда printf вне цикла?
Потому, что внутри цикла при каждой итерации выводится текущее значение переменной-счётчика, а вне цикла вывод отрабатывает, когда очередная попытка чтения вернёт EOF (что собственно и происходит после нажатия Ctrl D)...
0
10.01.2011, 13:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2011, 13:25
Привет! Вот еще темы с ответами:

Чем ::printf предпочтительнее printf? - C++
Смотрю на код одного толкового программиста и, как новичек в С++, удивляюсь: какой смысл писать в таком стиле? Это же вроде одно и то же....

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

Вставляю из textarea в sqlserver данные на русском и при выводи они выдаются зюзиками - C# ASP.NET
Извеняюсь если до меня вопрос такой уже задовали, но ничего найти не могу Проблема вот в чём: Вставляю из textarea в sqlserver...

Использование данных из БД вне цикла - PHP БД
Приветствую, уважаемые программисты. Такая проблема: $result = mysql_query(&quot;SELECT * FROM datebase where var=$var&quot;); while ($row =...


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

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

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