Malloc, struktura i scanf - cos nie tak

0

Dzien dobry,

uprzedzam, nie mam polskich znakow i nad tem ubolewam.

Zaczynajmy, pisze programik, niby male nic, ogolnie jest akcja:punkty na plaszczyznie.

kod:

 #include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
	typedef struct
	{
		char N;
		int x,y;
		float d;	/* potrzebne do czegostam*/
	}punkt;
	
	int Q,i;
	punkt *t;

	scanf("%i", &Q);
	
	t = (punkt*) malloc(Q * sizeof(punkt));
	
	for( i = 0 ; i < Q ; i++ )
	{
		scanf("%c %i %i", &(t[i].N) , &(t[i].x) , &(t[i].y));
	}		
	for( i = 0 ; i < Q * 16 ; i++ )
	{
		printf("%c %i %i", t[i].N, t[i].x, t[i].y);
	}
	
	free(t);
	return 0;
} 

Fun i zabawa, ale wyjscie wyglada nie tak jakbym tego chcial, podejzewam scanfa o to ze pakuje dane nie tam gdzie powinien, lub ja nie ogarnalem modelu pamieci.

Struktura jest tak duza jak ilosc_jej_elementow * element_najwiekszy ( 2,4,8 ).

I nie wiem za bardzo jak to ugryzc. Czytalem podobny temat, jednak zupelnie nie oddaje on tego czym jest moj problem.

Wyglada to tak jakby nie zawsze dzialal scanf ( przeskakuje o 2 w przod )

Tak wyglada wyjscie:

 
5
w 1 1
s 2 2
c 4 4

 0 0
w 1 1

 0 0
s 2 2

 0 0
1

"%c" nie kasuje '\n' podczas wczytywania, jak jest w tej pozycji w scanfie. Z mana:

c

Matches a sequence of characters whose length is specified by the maximum field width (default 1); the next pointer must be a pointer to char, and there must be enough room for all the characters (no terminating null byte is added). The usual skip of leading white space is suppressed. To skip white space first, use an explicit space in the format.

0

Dziekuje za odpowiedz , juz popprawilem.

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