|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jun 2013
Messaggi: 2
|
[C] Problema con funzione e struct
Buongiorno ho un problema con un programma che ho scritto in C vi spiego cosa succede:
Io ho un programma che usa diverse struct definite da me e comprende delle funzioni. In queste struct c'è un campo id definito come array di char. Il programma funziona correttamente. Successivamente sono andato a sostituire il tipo di id facendolo long visto che sono tutti numeri(cambiando ovviamente tutte le cose diverse tra char e long).Quando vado a fare questa sostituzione però un campo int della struct qualche volta viene inizializzato a caso. Qualcuno ha qualche idea? |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Jun 2013
Messaggi: 2
|
Queste sono le struct:
typedef struct nodo{ long id; //(char id[20]; int oraArr; int oraPart; } nodo; typedef struct percorso{ long id; //char id[20]; int n; nodo *nodi; } percorso; Queste le funzioni: int contiene(percorso *ps, long s, int l){ int c; if (l==0) return -1; else { for(c=0; c<l; c++){ if (ps[c].id == s) return c; } return -1;} } int addnodo(nodo **n, long s, int oa, int op, int c){ c++; (*n)=realloc((*n), c*sizeof(nodo)); /*strcpy((*n)[c-1].id,s);*/ (*n)[c-1].id = s; (*n)[c-1].oraArr=oa; (*n)[c-1].oraPart=op; return 1; } int addpercorso(percorso **ps, long s, int n, int z){ n=n+1; //printf("%d\n",n); (*ps)=(percorso*)realloc((*ps),n*sizeof(percorso)); /*strcpy((*ps)[n-1].id,s);*/ (*ps)[n-1].id=s; (*ps)[n-1].n=z; //printf("%d\n",(*ps)[n-1].n); return 1; } Questa la parte di main che invoca le funzioni int g=contiene(percorsi, A[j].B[h].id, p); if(g>=0){ int d=percorsi[g].n; printf("%d g %d d\n", g,d ); percorsi[g].n=d+addnodo(&percorsi[g].nodi, A[j].id, A[j].B[h].oraArr, A[j].B[h].oraPart, d); } else{ p=p+addpercorso(&percorsi, A[j].B[h].id, p, 0); int d=percorsi[p-1].n; percorsi[p-1].n=d+addnodo(&percorsi[p-1].nodi, A[j].id, A[j].B[h].oraArr, A[j].B[h].oraPart, d); } } } |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jul 2008
Città: Roma
Messaggi: 542
|
Il problema potrebbe essere nel main o in altre parti ... se non posti *tutto* il codice in maniera che sia compilabile senza errori (e quindi si possa provare eseguendolo) non si potrà vedere se e dove si corrompe la struttura.
P.S. Ho 57 errori nella compilazione ... cosa posso provare? Ultima modifica di lorenzo001 : 10-06-2013 alle 09:15. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:57.