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

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

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

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

10.01.2011, 10:35. Просмотров 834. Ответов 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++ округление printf("%.4f", (float) ans ); и printf("%.4lf", ans );
вывод на экран чисел 1 2 2 3 3 4 4 5 5 6 6 7 7 8 8 9 9 10 10 11 11 12, с использованием одного цикла и что бы все printf были только в теле цикла C++
Используя одну переменную цикла укажите возможные способы объявления заголовка счетного цикла. C++
Выводи лишних символов в файл C++
C++ Вне зависимости от значения k, в консоль выводить двузначное число через printf()
Чем ::printf предпочтительнее printf? C++
C++ Написать программу, которая предлагает пользователю ввести 10 чисел, вычисляет процент положительных и отрицательных чисел и процент нулей и выводи
Как использовать данные из цикла вне его C++
C++ Для каждой строки матрицы подсчитать сумму элементов, вне заданного интервала, записать данные в новый массив
В каком месте использовать конструктор - вне цикла или в цикле? C++
C++ Вывод результата вне цикла
Применение цикла if для определения простых чисел. If внутри цикла for C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
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 вне цикла?
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
10.01.2011, 13:25     printf не выводи данные вне цикла. #6
Цитата Сообщение от Shampe Посмотреть сообщение
почему ctrl-d не нужен,если printf внутри цикла,но нужен тогда,когда printf вне цикла?
Потому, что внутри цикла при каждой итерации выводится текущее значение переменной-счётчика, а вне цикла вывод отрабатывает, когда очередная попытка чтения вернёт EOF (что собственно и происходит после нажатия Ctrl D)...
Yandex
Объявления
10.01.2011, 13:25     printf не выводи данные вне цикла.
Ответ Создать тему
Опции темы

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