Cześć! Mam za zadanie napisać kod, który będzie podawał liczbę liter, cyfr oraz 'linii' wprowadzonych przez użytkownika linii tekstu. Zakończenie podawania następuje przy EOF'ie. Napisałem coś takiego:
puts("Podaj linie tekstu: (Ctrl+Z -> EOF)");
do{
gets(tablica);
wiersz++;
n = strlen(tablica);
for (i = 0; i <=n; i++) {
if (isalpha(tablica[i])) {
znak++;
}
if (isblank(tablica[i])) {
spacja++;
}
if (isdigit(tablica[i])) {
cyfra++;
}
if (ispunct(tablica[i])) {
graph++;
}
if (isspace(tablica[i])) {
enter++;
}
}
} while (getchar() != EOF);
printf("\n\n");
printf("Litery=%d\nCyfry=%d\nSpacje=%d\nZnaki=%d\nLinijki=%d", znak, cyfra,spacja,graph,wiersz);
getchar();
Niestety program nie zlicza pierwszych liter w każdej nowej linii.
Wydaje mi się, że to przez to iż sprawdzanie EOF'a 'przesuwa' wskaznik o jedno miejsce - mam racje?
Jakieś propozycje jak to poprawić? :)