View Full Version : aiuto con questi puntatori
salve, è da molto tempo che nn uso i puntatori di puntatori e sono un pò arruginito, coma faccio a scrivere dentro questa struttura???
e come faccio a leggere?
struct command_strucut{
char *name;
char **argv;
}*command;
in *name ok lo so come si fa, ma in **argv???
DanieleC88
11-05-2005, 13:00
Non ricordo se command->*argv[x] o *command->argv[x]...
Ziosilvio
11-05-2005, 13:46
struct command_strucut{
char *name;
char **argv;
}*command;
Vediamo: o assegni direttamente come puntatore:
command->argv=args; /* args e' la lista di argomenti */
oppure allochi in quantita' sufficiente e poi assegni:
command->argv=(char**)malloc(nargs*sizeof(char*)); /* nargs e' il numero di elementi di args */
for (i=0; i<nargs; i++)
command->argv[i]=args[i];
oppure infine allochi in quantita' sufficiente e poi copi:
command->argv=(char**)malloc(nargs*sizeof(char*));
for (i=0; i<nargs; i++) {
command->argv[i]=(char*)malloc(strlen(args[i])+1);
strcpy(command->argv[i],args[i]);
}
Ti faccio osservare che non ho scritto il codice per il controllo degli errori, e devi mettercelo tu ;)
EDIT: l'allocazione di command->argv era sbagliata; adesso e' giusta.
sukoy27k
11-05-2005, 14:33
oppure infine allochi in quantita' sufficiente e poi copi:
command->argv=(char**)malloc(nargs);
credo sarebbe più corretto
command->argv=(char**)malloc(nargs*sizeof(char*));
char** identifica un puntatore ad un vettore di puntatori,immaggina una matrice tanto per capirci.
Ziosilvio
11-05-2005, 14:41
credo sarebbe più corretto
command->argv=(char**)malloc(nargs*sizeof(char*));
Infatti e' corretto come dici tu :ops:
Chiedo scusa, adesso correggo.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.