Sprawdzanie końca pliku, błąd

0

Cześć.
Mam program, który wczytuje ze standardowego wejścia znaki, za pomocą getchar():

#include <stdio.h>
main()
{
int tablica_std[300];
int i=0;
    while((tablica_std[i])!=EOF)
    {
            tablica_std[i]=getchar();
            printf("%c, %d, %d\n", tablica_std[i], i, tablica_std[i]);
            if((tablica_std[i])!=EOF) { i++; } else { printf("\nKoniec");}
    }

    printf("%d", i);
    return 0;


}
 

Gdy wczytuje plik ze 125 znakami, program zwraca mi błędną ilość znaków. Zauważyłem, że zależy to od wielkości tablicy, np dla tablicy 100 elementowej zwraca mi 60 znaków, dla tablicy 300 elementowej 20 znaków, a dla tablicy 500 elementowej zwraca 125 znaków (czyli poprawnie). Czym jest spowodowany ten błąd?

0
int tablica_std[300];
int i=0;
    while((tablica_std[i])!=EOF)

Czytasz niezainicjalizowaną część tablicy. Dalsza analiza programu ma sens dopiero po naprawieniu tego błędu.

1
...
while((tablica_std[i]=getchar())!=EOF)
    {
            printf ...
0

Użyłem pętli do while, i nadal działa tak samo.
EDIT: Problem rozwiązany (a właściwie zrozumiany)

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