PDA

View Full Version : [c] perchè crasha?


diego86
29-02-2008, 20:52
typedef struct biglia{int x,y;};

struct biglia *scorrib;
int x,y=0;
for(i=0; i < r ; i++)
{for(j=0; j < c ; j++)
{scanf("%d", &v);
if(v!=0)
{printf("1");
scorrib->x=x+j;
scorrib->y=y+i;
printf("2");
.......

Il programma mi stampa 1 e poi crasha prima di stamparmi 2... cosa faccio di sbagliato? avevo provato anche con (*scorrib).x=x+j; ma il risultato è lo stesso..

vizzz
29-02-2008, 21:22
typedef struct biglia{int x,y;};

struct biglia *scorrib;
int x,y=0;
for(i=0; i < r ; i++)
{for(j=0; j < c ; j++)
{scanf("%d", &v);
if(v!=0)
{printf("1");
scorrib->x=x+j;
scorrib->y=y+i;
printf("2");
.......

Il programma mi stampa 1 e poi crasha prima di stamparmi 2... cosa faccio di sbagliato? avevo provato anche con (*scorrib).x=x+j; ma il risultato è lo stesso..

non hai allocato la tua struttura scorrib.
se la tua intenzione non è quella di allocare dinamicamente la struttura

struct biglia scorrib;

diego86
29-02-2008, 21:50
ok grazie..ho allocato la biglia con la malloc e il programma procede, però ho anche una stringa da inserirci dentro che indica il colore e adesso si blocca sull strcpy...

typedef struct biglia{int x,y;
char *colore;};

struct biglia *scorrib;
scorrib=malloc(sizeof(struct biglia));
int x,y=0;
char col[100];
for(i=0; i < r ; i++)
{for(j=0; j < c ; j++)
{scanf("%d", &v);
if(v!=0)
{scorrib->x=x+j;
scorrib->y=y+i;
printf("1");
strcpy(scorrib->colore,col);
printf("2");

vizzz
29-02-2008, 21:57
è ancora un problema di allocazione, della stringa colore è allocato il puntatore presente nella tua struct.
se sai a priori che la lunghezza massima è di 100 caratteri dichiara la stringa come hai fatto per col, ah metti il codice nel tag CODE così si capisce meglio

diego86
29-02-2008, 22:13
potresti postarmi cosa devo modificare? perchè ho allocato la stringa con la malloc ma non va lo stesso..