Czytanie danych z pliku

0

Witam wszystkich
Musze napisać funkcje która wczyta dane z pliku i wpisze je do tablic.
Wygląda to tak, że dane są w pliku w taki sposób poukładane :

 
1(znak \t)100(znak\n)
2(znak \t)123(znak\n)
3(znak \t)12312(znak\n)

itd
Moim zadaniem jest wpisanie tych cyfr 1,2,3 itd do jednej tablicy, a 100,123 ,12312 do drugiej tablicy pomijając białe znaki \t i \n
Udało mi się po przeczytaniu paru poradników napisać funkcję która czyta wszystko. Nie potrafię jednak porozdzielać tego wszystkiego do osobnych tablic.

	
 {
 	FILE *plik;
 	int i;
 	char znak;
 	plik=fopen("plik.txt","r");
 	if(plik ==NULL)
 	printf("Plik nie istnieje lub jest pusty");
 	while (znak!=EOF)
 	{
	  znak=fgetc(plik);
 
 	 printf("%c",znak);
 } 

Pomożecie ?

0
for(i=0;fscanf(plik,"%d%d",tb1[i],tb2[i])==2;++i) { /* tu ewentualnie powiększanie tablic*/ }
0
char str[100];
fscanf (pFile, "%s", str); 

to Ci wczyta stringa z pliku i ominie białe znaki. Np tak

char liczba[16], wiecejLiczb[MAX_ROZMIAR];
fscanf (pFile, "%s", liczba);
fscanf (pFile, "%s", wiecejLiczb);

wczytasz całą linie

0

Uff. Udało mi się. Nie ukrywam że bardzo mi pomogliście. W międzyczasie walczyłem z innymi problemami i dałem radę jednak nie daje mi spokoju pewna kwestia. Napisałem funkcję która czyta dane z pliku. Wygląda ona tak :

void wczytaj(Tablica *t, Parametry *p)
 {
	FILE *plik;
	int i;
	int y;
	int licznik=0;
	int ilosc=0;
	char znak;
	plik=fopen("plik.txt","r");
	while((znak = fgetc(plik)) != EOF) 
	{ if(znak == '\n')
	licznik++;
	}
	printf("%d\n\n",licznik);
	fclose(plik);
	plik=fopen("plik.txt","r");
	
	 ilosc=licznik;
	 t->sygnal=(double*)malloc(sizeof(double)*ilosc);
	 t->czas=  (double*)malloc(sizeof(double)*ilosc);
	 t->ilosc=ilosc;
	
	if (plik ==NULL)
	printf("Plik nie istnieje lub jest pusty");
	else
 for (y=0;y<t->ilosc;y++) 
	{
fscanf (plik, "%lf\t ", &t->czas[y]);
fscanf (plik, "%lf\n", &t->sygnal[y]);
}
for (y=0;y<t->ilosc;y++) 
printf ("%lf\t %lf\n",t->czas[y],t->sygnal[y]); 	 
	 fclose(plik);	
 }
} 

Użyłem funkcji while która zliczy mi ilość wierszy w pliku dzięki czemu mogłem zastosować tą informację potrzebną do funkcji for.
Problem polega na tym że musiałem zamknąć plik i otworzyć go na nowo po funkcji while. Gdy tego nie robiłem program kompilował się poprawnie jednak wywalało mi masę różnych przypadkowych liczb. Moglibyście mi powiedzieć dlaczego tak jest i czy jest jakiś sposób aby uniknąc ponownego otwarcia pliku w celu wyświetlenia danych ?

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