[C] Wczytywanie kilku liczb z pliku binarnego


(Zmuszony) #1

Witam,

o ile w przypadku plików tekstowych nie mam problemu z odczytaniem kilku danych o tyle jeśli chodzi o pliki binarne nie mam pojęcia jak odczytać więcej liczb.

Przykładowy program:

#include 

#include 


int main()

{

	int liczba=1234, liczba2=5678, odczytana, odczytana2;

	FILE *plik;


	//zapisuję

	plik=fopen("C:\\lng\\bin.txt","wb");

	fwrite(&liczba, sizeof(int), 1, plik);

	fwrite(&liczba2, sizeof(int), 1, plik);

	fclose(plik);


	//odczytuję

	plik=fopen("C:\\lng\\bin.txt","rb");

	fread(&odczytana, sizeof(int), 2, plik);

	fclose(plik);


	//wyświetlam

	printf("%d\n", odczytana);


	system("pause");

	return 0;

}

Zapisałem do pliku dwie liczby: 1234 i 5678 ale nie wiem jak odczytać wszystkie - pierwszą bez problemowo ale jak przeskoczyć dalej i wczytać również drugą?

Z góry dzięki za wszelkie wskazówki :wink:


(Rolek0) #2

Eeee... normalnie odczytujesz jedną liczbę a potem drugą, wskaźnik pliku ci się sam przesuwa do przodu. Jak chcesz ręcznie przesuwać wskaźnik pliku to mozesz użyć funkcji fseek.

W powyższym kodzie odczytujesz przez fread 2 liczby a odczytana mieści tylko jedną, jest to dość poważny błąd. Co prawda w tym przypadku nic bardzo złego się nie stanie ale wiedz, że źle czynisz :wink:


([alex]) #3

Może szukasz hasła pętla?


(Zmuszony) #4

Aaaa już wiem - w przykładzie, który tu wrzuciłem ustawiłem na sztywno normalne liczby dla int a w swoim programie miałem liczbę przekraczającą zakres int i mi dziwne rzeczy wychodziły :stuck_out_tongue: