|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: May 2011
Messaggi: 7
|
[C]Problema vettore di strutture e allocazione dinamica
Codice:
struct comp *comps = 0;
struct comp *ccompx(const char name[])
{
struct comp *p;
struct comp *pa;
glob = 0;
pa = (struct comp*) malloc(sizeof(struct comp));
if(!pa)
{
puts("Ricerca interrotta.");
return 0;
}
int s;
for(p = comps, s = 1; p; p = p->n, s++)
{
int i = 0;
for(; name[i] != p->name[i]; i++);
if(p && name[i] == p->name[i])
{
int a = 1;
for(; name[i + a] == p->name[i + a]; a++);
if(a == strlen(name))
{
pa[s - 1] = p; // errore
glob++;
realloc(pa, sizeof(struct comp) * s + 1);
if(!pa)
{
puts("Ricerca non completata.")
goto ret;
}
}
return 0;
}
}
ret:
return pa;
}
Ultima modifica di drewus : 01-09-2011 alle 18:32. |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: May 2011
Messaggi: 7
|
Modifica
Ho apportato le seguenti modifiche:
Codice:
struct comp *p = (struct comp*)malloc(sizeof(struct comp));
if(!p)
{
//
}
struct comp **pv = 0;
struct comp ***point;
int s;
for(p = comps, s = 1; p; p = p->n, s++)
{
unsigned int i = 0;
for(; name[i] != p->name[i]; i++);
if(p && name[i] == p->name[i])
{
unsigned int a = 1;
for(; name[i + a] == p->name[i + a]; a++);
if(a == strlen(name))
{
pv = (struct comp **) realloc(pv, sizeof(struct comp*) * (s + 1));
if(!pv)
{
goto ret;
}
point = &pv;
pv[s] = p;
}
continue;
}
}
pv[0]->code = s; // l'elemento 0 funge da contatore degli elementi totali
ret:
return point;
}
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 23:27.



















