[C] Wczytywanie danych z pliku

0

Cześć,

kiedyś się bawiłem funkcją fscanf i przypuszczałem, że wiem jak działa, jednak teraz wróciłem do C i muszę wczytać pewne dane z pliku, jednak mam jakieś problemy z tym. Z pliku chciałem wczytać pewne liczby, przykładowy plik:
A0
1 8
2 9 8 4
3 1 4

chciałem wczytać liczby 1 i 8, więc wydawało mi się, że wystarczy napisać fscanf( plik, "%d %d\n", &a, &b ); i w zmiennych a i b mam te liczby, jednak tak nie jest (żadnych liczb mi nie znajduje). Dodam, że plik może wyglądać nieco inaczej, np.:
A0

dsf sdsdf

1 8
2 9 8 4
3 1 4

jak się dobrać do tych danych liczbowych?

Pozdrawiam i dzięki za pomoc.

0

zamień "%d %d\n" na "%d%d" lub "%d %d\r\n" (strzelam ze siedzisz na windowsie i enter ma u Ciebie dwa znaki). jesli to nie pomoze pokaz jak otwierasz plik.

0

tak, siedzę na windowsie, jednak to co napisałeś niestety nie pomogło.
Kod mam mam taki:

	int a = 1, b = 1;
	plik = fopen( name, "r" );
	if( plik == NULL ) {
		printf( "error\n" );
	}
	fscanf( plik, "%d %d\r\n", &a, &b );
	printf( "%d %d", a, b );

plik wygląda dokładnie tak:
A5
A BBB
4 2

jednak mimo wszystko printf wyświetla mi "1 1", zamiast "4 2".

0

a sprobuj tak: fscanf(plik, "%*s%*s%*s%*s%d%d",&a,&b);
przed pobraniem A i B musisz pozbyc sie najpierw tych tekstow z przodu. jak nie wiesz ile ich jest to mozesz z pliku wyciagac linie po linii (fgets) nastepnie uzywac sscanf, ta z kolei zwroci Ci rowniez ile elementow udalo Ci sie odczytac co oznacza ze moglbys zrobic np tak:
if (sscanf(linia,"%d%d,&a,&b)!=2)
printf("nie udalo sie odczytac liczb!");

teoretycznie moglbys manipulowac bezposrednio na pliku, ale nie polecam bo nie jestem pewien czy flagi bledow tam nie zostaja przy probie wczytania liczby a trafieniu na liczbe

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.