Dzielenie pliku tekstowego

0

Mam plik tekstowy który powiedzmy ze ma 48(3 linie oddzielają zwartość) linijek - po 50 znaków w wierszu chciałbym go podzielić na 3 równe części(0-14,16-31,32-47) i zapisać je do osobnych tablic napisałem program który to robi.. ale okazuje się że nie na każdym kompilatorze

//deklaracje itp
for(j=0;j<15;j++){
    for (i=0;i<50;i++)
    {
     fseek(pliczunio, i, z+ktorypodzial);
     tab[j][i]= fgetc(pliczunio);
    }z=i;
}
    fclose(pliczunio);
    return tab;
} 

idea była taka ze wywołuje funkcje 3x z argumentem ktorypodzial - określający w jakim miejscu ma się ustawić głowica czytnika.Wszystko ładnie działało aż do czasu jak dziś przeniosłem się na inny kompilator - zacząłem szukać odp i znalazłem:
,,Text streams: For text streams, ftell() returns an encoded offset. When seeking with an origin of SEEK_SET, you are restricted to seeking only to 0 or to positions returned by a previous ftell().

Attempting to calculate your own position is not supported, and may result in a non-valid position and the failure of fseek()."

Tak więc ten sposób odpada(nie można tak sobie żonglować pozycją głowicy z nie może być zmienną), jakieś inne propozycje? ;S

0

Z tego co zrozumiałem możesz zrobić to tak:

for(int i=0;fscanf(pliczunio,"%16s%17s%17s ",&A[i],&B[i],&C[i])==3;++i) {}

Ale lepiej zobrazuj to na jakimś przykładzie.

0

Załącznik - o coś takiego mi chodziło. To co podesłałeś jest zbyt ,,skompresowane" wiec mnie przerosło ;<
Aktualnie zadeklarowałem tablice2x2 i za pomocą fgetc wrzuciłem wszystko do niej. teraz w sumie mógłbym poprzypisywać odpowiednie wiersze do nowych tabel ale chyba zostawię tak i w razie potrzeby wyświetlenia (tabA, tabB, tabC) będę zmieniał jedynie indeks wierszy

Załącznik - o coś takiego mi na początku chodziło. *(żeby całość dało się zwrócić)

0
char tab[3][17][51];
for(unsigned z=0;z<3;++z,fscanf(pliczunio,"%*s")) for(unsigned y=0;y<17;++y) fscanf(pliczunio,"%50s ",&tab[z][y][0]);

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