instrukcja while( getchar() != EOF)

0

Witam
czy ktoś może mi wytłumaczyć dlaczego printf w poniższym kodzie się nie wyswietla?
Zaczynam na Pelles C

#include <stdio.h>
int znaki;
int main()
{
	while( getchar() != EOF) 
		znaki++;
	printf("\nLiczba znakow to - %d", znaki);
 return 0;
}
0

while (getchar() != '\n')

0

i wyzeruj wcześniej zmienną 'znaki'

0

A odpowiadając na pytanie:
ponieważ nie napotykasz EOFa w trakcie pisania z klawiatury, bo stdin wcale nie zakańcza sie po wciśnięciu entera. Gdybyś przekierował do programu plik jakis to by zadziałało, bo na końcu pliku masz znak EOF.

@up zerować nie musi bo zrobil sobie zmienną globalną, a takie są zerowane z automatu.

0

EOF wstawia się poprzez Ctrl+Z lub Ctrl+D zależnie od systemu operacyjnego. Inna sprawa, że nadal może wymagać potwierdzenia enterem jeżeli konsola pracuje w trybie liniowym.

0

ctrl+z to wiem i stosowałem
ale to też nie zmienia sytuacji
ctrl+d wypróbowałem teraz i też to samo

0

Na windowsie musisz,z tego co pamiętam zrobić:
pustą linię, enter, potem ctrl+D i znów enter

0

ale kombinacje :) z tymi nowymi linjami
na razie zastosowałem poradę daw_wina'\n'
dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1