Jump to content

Archived

This topic is now archived and is closed to further replies.

zizou666

Czytanie zpliku - dziwny problem

Recommended Posts

Mam problem bardzo dziwny, i nie mam pojecia czemu sie dzieje tak, jak sie dzieje:

Mam taki kod:

int main(void)
{
    //odczyt z pliku danych do posortowania
    unsigned int n;
    unsigned int i=0;
    char nazwa[100];
    int dane[n];
    printf("Podaj nazwe pliku do odczytu\n");
    scanf("%s", &nazwa);
    FILE *file;
    if((file = fopen (nazwa, "r"))==NULL)
    {
    printf("Taki plik nie istnieje\n");
    exit (1);
    }
    while((fscanf(file, "%d ", &dane[i]))!=EOF)
    i++;
    
    fclose(file);
    n=i;
    for(i=0;i<n;i++)
    printf("%d ", dane[i]);
    
    getchar();
    getchar();
    return 0;
}

Program ten wczytuje mi z pliku liczby calkowite do 17 indeksu tablicy. Kiedy wpisze wiecej liczb program sie zawiesza. Nie mam pojcia o co chodzi. Z gory dzieki za pomoc, bo pewne gdzies zrobilem jakis banalny blad ;)

Link to comment
Share on other sites

No nie podaje jej bo z zalozenia chcialem zrobic, aby nie wyznaczac sobie zakresu. Ale widze, ze jesli ustale jakas np bardzo duza wartosc to faktycznie program normalnie odczytuje liczby, wiec jest ok. Jednak program ten bede musial wykorzystac do sortowania bardzo wielu liczb w celu sprawdzania wydajnosci roznych metod sortowania. Dlatego nie wiem czy wystarczy, ze okresle n (teoretycznie jakas bardzo duza liczba powinna wystarczyc), czy jest jakis inny sposob, aby nie ustalac zakresu (chyba tablice dynamiczne, ale jeszcze nie jestem z nimi za pan brat :)).

Link to comment
Share on other sites

Kompilujesz to w c ?

Nigdy nie pojmę, czemu konstrukcja

int n;
int tab[n];

jest dopuszczalna.

Tak czy siak, trzeba zrobić tak jak napisał wies.niak, czyli zaalokować pamięć:

FILE * file = fopen(...);
fseek(file, 0, SEEK_END);
int size = ftell(file);
fseek(file, 0, SEEK_SET);

int * tab = (int *) malloc(size);

fseek

ftell

malloc

Alokowaną pamięć TRZEBA zwolnić: free

free(tab);

Link to comment
Share on other sites



  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...