PDA

View Full Version : [C] liste


diego86
01-03-2008, 10:51
vi posto direttamente tutto il codice perchè questo programma mi sta facendo....girare le biglie....
Con borland c funziona più o meno, poi quando termino (inserendo f) il programma va in crash. Se compilo con gcc addirittura si blocca durante l'esecuzione...non fate caso alle varie printf in mezzo al codice, ma le ho messe per verificare dove si blocca il programma... in particolare non capisco perchè si blocca nella strcpy della funziona input...infatti mi esegue la printf precedente, ma non quella successiva... poi se mi date un'occhiata nel compless ve ne sarei molto grato...grazie mille

cionci
01-03-2008, 11:39
Ma usare il debugger di Borland C no ?

Quando fai la scanf di una stringa non devi mettere la &.

diego86
01-03-2008, 11:56
lo sto usando il debugger ma con quello non mi da alcun problema.
peccato che il prof vuole che sia compilato con gcc e con quello mi da qualche warning e si blocca subito in quella strcpy... (anche modificando le scanf senza &)

cionci
01-03-2008, 12:02
Ci credo...non hai allocato colore all'interno della struttura dati...

diego86
01-03-2008, 12:17
ovvero? ho provato così ma non va...
(*scorrib).colore=malloc(sizeof(char*));

o forse dovrei usare la calloc e indicare precisamente la lunghezza della stringa che posso ricavare cona strlen?

cionci
01-03-2008, 12:23
Devi allocare spazio per la stringa...

scorrib->colore = (char *) malloc(sizof(char) * (L + 1));

dove L è la lunghezza della stringa.

diego86
01-03-2008, 12:29
niente da fare... :cry:

k0nt3
01-03-2008, 13:04
ma scusa.. devi fare il cast quando allochi memoria, esempio:
scorrib=(struct biglia*)malloc(sizeof(struct biglia));

ps. tra l'altro visto che usi typedef puoi omettere struct e scrivere semplicemente:
scorrib=(biglia*)malloc(sizeof(biglia));

diego86
01-03-2008, 14:35
si ma non penso che sia per questo che si blocca la strcpy

k0nt3
01-03-2008, 18:38
si ma non penso che sia per questo che si blocca la strcpy

beh a me con gcc non compila nemmeno il tuo sorgente

k0nt3
01-03-2008, 18:53
sono riuscito a compilarlo e mi da solo un segmentation fault per il fatto che chiudi il file anche quando non riesci ad aprirlo
fclose(fp); devi metterlo solo se fp non è NULL e quindi solo nel ramo else

diego86
01-03-2008, 19:28
si ma si compila anche da me, a parte qualche warning sulle typedef...
però quando lo eseguo mi si blocca sulla strcpy