Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Shampe
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 4
#1

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

10.01.2011, 10:35. Просмотров 899. Ответов 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
Ответы с готовыми решениями:

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

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

Вне зависимости от значения k, в консоль выводить двузначное число через printf()
нужно чтобы вне зависимости от значения k, в консоль выводилось 2знчное число....

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

В каком месте использовать конструктор - вне цикла или в цикле?
Добрый день! Как писать правильнее? Ниже два примера: QStringList data;...

5
easybudda
Модератор
Эксперт CЭксперт С++
10029 / 5952 / 1486
Регистрация: 25.07.2009
Сообщений: 11,251
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Эксперт С++
10029 / 5952 / 1486
Регистрация: 25.07.2009
Сообщений: 11,251
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Эксперт С++
10029 / 5952 / 1486
Регистрация: 25.07.2009
Сообщений: 11,251
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

Выводи лишних символов в файл
Не знаю почему, но в файл печатаются лишнbе символы 'H', а на экран нормально...

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

Не делает сортировку или не выводи,не могу понять что не так
Написать программу обработки файла типа запись, содержащую следующие пункты...


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

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

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