PDA

Visualizza la versione completa : [C] Puntatori a stringhe e allocazione dello spazio


billybilly
03-11-2006, 10:25
ciao a tutti,
sto impazzendo su dei puntatori a stringhe....
io ho questo segmento di codice :

//fp e il mio puntatore a file gia aperto in lettura...ho una serie di nomi.... diego marco carlo ecc ecc

char * names[dimname];
char *tmp;

for(i=0;i<dimname;i++)
{
fscanf(fp,"%s",tmp);//la fscaf ok
strcpy(names[i],tmp); //qui ho problema!!!
}

Mi da errore di Segmention Fault...... maleddetti puntatori c -.-'
vi prego datemi una mano
grazie ciaoo

andbin
03-11-2006, 11:04
Originariamente inviato da billybilly
char * names[dimname];
char *tmp;

for(i=0;i<dimname;i++)
{
fscanf(fp,"%s",tmp);//la fscaf ok
strcpy(names[i],tmp); //qui ho problema!!!
}

Mi da errore di Segmention Fault...... maleddetti puntatori c -.-'
vi prego datemi una mano
grazie ciaoo Hai solo dichiarato N puntatori ma non hai allocato spazio per le stringhe. L'array 'names' non inizializzato, e sicuramente contiene schifezze ... puntatori con valori fasulli.

oregon
03-11-2006, 11:17
Originariamente inviato da andbin
Hai solo dichiarato N puntatori ma non hai allocato spazio per le stringhe. L'array 'names' non inizializzato, e sicuramente contiene schifezze ... puntatori con valori fasulli.

Non solo ... ma usi per la scanf tmp che e' un puntatore non inizializzato ...

Tu non hai ben chiaro che dietro ai puntatori ci deve essere dello spazio allocato ... manca come concetto in tutto il tuo programma ...

oregon
03-11-2006, 11:17
Originariamente inviato da Abenzka
char * names[dimname];
char * tmp;

for(i=0;i<dimname;i++)
{
fscanf(fp,"%s",tmp);//la fscaf ok
names[i] = strdup(tmp);
}

Prova cos, non ti so dire se funziona xk non posso provarlo adesso cmq la strdup mi ha salvato parecchie volte con questi problemi...


La strdup non c'entra ... forse non hai letto il commento di andbin ... e devi ripassare anche tu l'uso dei puntatori ...

Lak3d
03-11-2006, 12:53
Originariamente inviato da oregon
ma usi per la scanf tmp che e' un puntatore non inizializzato ...


ha scritto che era gi inizializzato.

Samuele_70
03-11-2006, 13:24
Originariamente inviato da Lak3d
ha scritto che era gi inizializzato.
Il punatore a file si, ma non le stringhe...

Originariamente inviato da billybilly
[...]
//fp e il mio puntatore a file gia aperto in lettura...ho una serie di nomi.... diego marco carlo ecc ecc

char * names[dimname];
char *tmp;

for(i=0;i<dimname;i++)
{
fscanf(fp,"%s",tmp);//la fscaf ok
strcpy(names[i],tmp); //qui ho problema!!!
}

Mi da errore di Segmention Fault...... maleddetti puntatori c -.-'
[...]
Inoltre la strdup() non standard :fagiano:

oregon
03-11-2006, 13:53
Originariamente inviato da Lak3d
ha scritto che era gi inizializzato.

Dove lo hai letto? :confused:

Lak3d
03-11-2006, 14:01
nel post di apertura.. dice che un puntatore ad un file gi aperto in lettura... :bh:

edit: ahhhh, si parlava di tmp, chiss perch ho letto fc :D

oregon
03-11-2006, 14:08
Originariamente inviato da Lak3d
nel post di apertura.. dice che un puntatore ad un file gi aperto in lettura... :bh:

edit: ahhhh, si parlava di tmp, chiss perch ho letto fc :D

Attenzione ...
:madai!?:

Loading