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;
}
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;
}
while (getchar() != '\n')
i wyzeruj wcześniej zmienną 'znaki'
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.
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.
ctrl+z to wiem i stosowałem
ale to też nie zmienia sytuacji
ctrl+d wypróbowałem teraz i też to samo
Na windowsie musisz,z tego co pamiętam zrobić:
pustą linię, enter, potem ctrl+D i znów enter
ale kombinacje :) z tymi nowymi linjami
na razie zastosowałem poradę daw_wina'\n'
dzięki