[C] Wczytywanie danych z pliku o określonej nazwie.
Ostatnio zmodyfikowano 2016-01-06 19:36
macwie Temat założony przez niniejszego użytkownika |
[C] Wczytywanie danych z pliku o określonej nazwie. » 2016-01-06 13:35:24 Witam, chcę by użytkownik podawał nazwę pliku (wraz z rozszerzeniem), a następnie informacje z danego pliku byłyby wczytywane do tablicy. Napisałem coś takiego: Funkcja: char * load( char nazwa[] ) { char temp[ 80 ], tab_dan[ 150 ]; int i = 0; FILE * plik = fopen( nazwa, "r" ); if( plik == NULL ) { printf( "Blad z wczytaniem bazy danych!" ); } else { while( fgets( temp, 80, plik ) != NULL ) { strcpy( tab_dan[ i ], temp ); i++ } } return tab_dan; }
a w main: char * tab; char nazwa[ 80 ]; fgets( nazwa, 80, stdin ); tab = load( nazwa );
I wyskakuje mi printf, że plik jest NULL'em. Co robię nie tak ? Dodamy tylko, że jak dam, np load("nazwa.txt"); to wszystko działa. |
|
carlosmay |
» 2016-01-06 14:48:32 tab_dan[ 150 ]; powinna być dynamiczna, bo w tym przypadku jest lokalna i po wyjściu z funkcji jest usuwana. |
|
macwie Temat założony przez niniejszego użytkownika |
» 2016-01-06 15:25:30 No ale co z tego, że jest usuwana, jak program nie może nawet otworzyć pliku, a co dopiero pobrać z niego informacje. Nie wykrywa go, choć istnieje w katalogu z programem. |
|
Monika90 |
» 2016-01-06 15:55:08 W jaki sposób pobierasz nazwę od użytkownika? |
|
macwie Temat założony przez niniejszego użytkownika |
» 2016-01-06 16:47:29 Pobieram ją, używając fgets() z okna konsoli. Mogę ją później wrzucić do printf() i się pojawi. Może problem w tym, że ustaliłem rozmiar łańcucha znaków na 80, a jak nazwa ma powiedzmy 10 znaków to w pozostałych 70 miejscach są śmieci i fopen() nie rozpoznaje nazwy pliku. To możliwe ? |
|
Monika90 |
» 2016-01-06 17:06:10 fgets zapisuje na końcu łańcucha znak \n, więc musisz go usunąć. |
|
macwie Temat założony przez niniejszego użytkownika |
» 2016-01-06 17:28:18 A jakaś mała podpowiedź jak to zrobić ? :) |
|
Monika90 |
» 2016-01-06 18:16:41 int i = 0; while( nazwa[ i ] && nazwa[ i ] != '\n' ) ++i;
nazwa[ i ] = 0;
|
|
« 1 » 2 |