Odczyt z pliku

1

Siemka!!
Mam taki problem

Mam plik który zawiera takie informacje

Tytul:    dd
Autor:    ff
Gatunek:  gg
Cena:     44.00

Tytul:    dd
Autor:    ff
Gatunek:  gg
Cena:     77.00

I chce zrobić w programie tak żeby, pobierając pierwszą partie danych, Tworzył dynamicznie tablice struktur na jeden element,
następnie kiedy dojdzie do drugiej to poszerzy tą tablice o 1 element i wczyta dane, itd. Wczytywanie kończy się kiedy plik się skończy

oto jak wyglądają moje wypociny,

// przy pierwszym uruchomieniu programu realokacja=1
                 case 5:
			i = 0;
			if( ( bazatxt = fopen("ksiazki.txt", "r") ) == NULL )
			{
				fprintf(stderr,"Nie mozna otworzyc pliku\n");
				exit(EXIT_FAILURE);
			}
			
			tab_ksiazki = (struct ksiazka *) malloc (realokacja * sizeof(struct ksiazka));
			
			while( fgets(tab_ksiazki[i].tytul, TXT, bazatxt) != NULL)
			{
				fgets(tab_ksiazki[i].autor, TXT, bazatxt);
				fgets(tab_ksiazki[i].gatunek, TXT, bazatxt);
				fgets(numer, TXT, bazatxt);
				tab_ksiazki[i].cena = atoi(numer);
							
				ch = getc(bazatxt);
														
				++realokacja;
				if( ( tmp = (struct ksiazka *)realloc( tab_ksiazki, realokacja * sizeof(struct ksiazka) ) ) == NULL )
				{
					fprintf(stderr,"Realokacja niepowiodla sie\n");
					exit(EXIT_FAILURE);
				}
				else
				{
					tab_ksiazki = tmp;	
				}
				i++;				
			}
0

Tja, interesujące. Powiedz teraz, na czym polega twój problem.

0

Ok, ale w czym tkwi problem?

0

problem jest taki że odczytuje mi to w ten sposób

Tytul: Tytul: dd

Autor: Autor: ff

Gatunek: Gatunek: gg

Cena: 0.00

Tytul: Tytul: dd

Autor: Autor: ff

Gatunek: Gatunek: gg

Cena: 0.00

Tytul:
Autor: osoft Shared\Windows Live;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Common Files\A0ą}Ő†
Gatunek: ;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Common Files\A0ą}Ő†
Cena: 7458197.69

te śmieci z końca to pewnie dlatego że powiększam tablice o jedno niepotrzebne miejsce, ale nie wiem dlaczego jest jedną wolne miejsce pomiędzy wierszami, i ceny nie pobiera

0

Czyli problemem jest ta pusta linia pomiedzy danymi?

0

Jeśli kod który napisałem jest ok to na to wygląda, że tylko ta linia.
Fakt jest też taki że nie bardzo rozumiem to co napisałem.

0

Taka pomoc ci nie pomoże, zamiast:
ch=getc(bazatxt);
daj:
while((ch=fgetc(bazatxt))!='\n') {}
aby pozbyć się 'Tytul: ':
while((ch=fgetc(bazatxt))!=':') {}

0

nie mogę sobie z tym poradzić

0

Nie wiem, czy o to Ci chodzi, ale może to Ci pomoże:

//definicja 100-elementowej tablicy struktur
Tksiazka biblioteka[100]; 

I tu przykład o nie podanej ilości(dostosowującej się):

 //definicja dynamicznej tablicy struktur
Tksiazka biblioteka[];

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