Tablica struktur zapisywana do pliku

0

Witam.

Mam za zadanie stworzyć jakąś tablicę struktur danych i wczytać ją do pliku w C. Problem w tym, że przy wpisywaniu drugiego elementu tablicy od razu przeskakuje mi do drugiej zmiennej. Gdzie jest błąd?

#include <stdio.h>
#include <conio.h>
#define PLIK "TU_JESTEM.txt"

struct DANE
{
char imie[20];
char im;
int wiek;
};
struct DANE osoba[2];


int main()

{
	FILE *zapisanie;
	int i;
		for (i=0;i<=2;i++)
		{
			printf("\nPodaj imie osoby %d: \n", i+1);
			fgets(osoba[i].imie,sizeof(osoba[i].imie),stdin);
			sscanf(osoba[i].imie,"%s",&osoba[i].imie);
			printf("\nPodaj wiek osoby %d: \n", i+1);
			scanf("%d", &osoba[i].wiek);
		}

	zapisanie = fopen (PLIK, "w");
	for (i=0;i<=2;i++)
	{
	 fprintf(zapisanie, "\n%s", osoba[i].imie);
	 fprintf(zapisanie, "\n%d", osoba[i].wiek);
	}
	fclose(zapisanie);

	getch();

	return 0;
}
0
struct DANE osoba[2];
// ...
for (i=0;i<=2;i++)

Tablica 2-elementowa, iteracja po 3 elementach.

            fgets(osoba[i].imie,sizeof(osoba[i].imie),stdin);
            sscanf(osoba[i].imie,"%s",&osoba[i].imie);

Co Ty tutaj chcesz osiągnąć?

fgets(osoba[i].imie,sizeof(osoba[i].imie),stdin);

lubfscanf(stdin,"%s",&osoba[i].imie);

lub<code class="c">scanf("%s",osoba[i].imie);

http://melpon.org/wandbox/permlink/DjUYKeN1lOM0QgNl

0

Dziękuję bardzo za odpowiedź!

Mam jeszcze pytanie, dlaczego działa tylko w przypadku zwykłego scanf?

0

fscanf nie działa, bo czytasz ze stringa. Podawałeś mu ten sam string, do którego zapisywałeś, co chyba jest UB, a dodatkowo nie ma sensu biorąc pod uwagę, że pobranie linijkę wcześniej nie powinno się zdarzyć.

Pozostałe działają.
http://melpon.org/wandbox/permlink/3IU5EmFjWO7sGU1i
http://melpon.org/wandbox/permlink/5px7rfpUdkFePjEx

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