odczytywanie pliku binarnego

0

Witam!
Mam taki problem. Otóż mam plik: "plik.dat". I muszę napisać program, który będzie odczytywał po kolei z niego po 8 cyfr i zapisywał je do tablicy znaków, 8-mio elementowej (mam to w pętli więc kolejne znaki zastępują później tablica[0] itd). W każdym razie nie ważne jak ten plik otwieram - czy w trybie "r" czy też "rb" nie działa. Sprawdzałem na najprostszym przykładzie, np:

 int main(void) {
	int ln;
	char ch;
	FILE *plik;

	plik = fopen("danee.dat", "rb");

	while ((ch = getc(plik)) != EOF) {
		printf("%c", ch);
	}

	scanf("%d", &ln);
	return 0;
}

ale program wyświetla jakieś krzaczki. Jak więc mam ten plik odczytać, aby wyświetliło mi jego zawartość - cyfra po cyfrze?
Z góry dzięki za pomoc ;)

0

jeśli te cyfry są zapisane jako tekst to otwierasz tak: fopen("danee.dat", "r");
i później normalnie wczytujesz fscanf'em

jeśli są zapisane binarnie, użyj funkcji:
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

czyli mniej więcej tak:
int tab[8];
int ilosc_odczytanych = fread(tab, sizeof(int), 8 /maksymalna ilosc elementow ktora wczyta/, plik);

i jesli ilosc_odczytanych!=8 to znaczy ze albo wystapil koniec pliku albo blad

edit:
źle przeczytałem:
char tab[8]; zamiast int tab[8];
i sizeof(int) zamien na sizeof(char)

0

Jaki jest format pliku?
podejrzewam, że bardziej ci zależy na czymś takim:

printf(" x%02X", (int)ch);

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