|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
[C] - Array di stringhe
Sarò breve! Ho creato una funzione che mi permette di inserire caratteri da terminale e mi restituisce un char **! Appena ho tra le mani l'altro computer lo posto per vedere se ci sono problemi!
Il problema mi sorge quando voglio passare questo array di stringhe al comando Codice:
execvp(char * cmd, char ** arg) Se non c'è al più presto posto la mia funzione per vedere se ci sono problemi in quella.. ciao |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
scusate devo aver cliccato una volta di troppo
|
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Feb 2005
Città: Prato
Messaggi: 149
|
Ciao,
Che tipo di errore ti da? Non compila o non agisce come vorresti? Ricorda che la prima stringa del vettore deve essere il nome del programma, i parametri partono da arg[1] in poi e devono terminare con un parametro NULL. In sostanza per aprire il notepad.exe su unfile.txt dovrai avere arg[0]="notepad.exe", arg[1]="unfile.txt" e arg[2]=0. In memoria hai più semplicemente (nota i \0): "notepad.exe\0unfile.txt\0\0" In ogni caso, se conosci il numero di parametri a priori potresti usare la analoga execlp che accetta un numero variabile di argomenti terminati da un NULL. Ciaociao ![]()
__________________
Venite a visitarci qui:http://www.bottomap.com Bottomap is a proud Masterdrive.it moderator Ultima modifica di bottomap : 04-12-2009 alle 18:32. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Grazie della risposta! Guarda quando eseguo la exec sul char ** che ho creato io mi da errore in esecuzione! Comunque ora che ci penso forse ho capito dove sbaglio! Mannaggia che dove ho l'altro computer non ho internet! Oggi lo posto comunque..
|
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2004
Messaggi: 1945
|
Codice:
char ** lettura(){ char **p; p = malloc(MAXPAM * sizeof(char *)); int carattere, i, j; for(i = 0; i<MAXPAM; i++)p[i] = malloc(MAXLEN * sizeof(char) + 1); i = 0; j = 0; carattere = getchar(); while(carattere != '\n'){ if(carattere == ' '){ *(*(p + i) + j) = '\0'; j = 0; ++i; } else{ *(*(p + i) + j) = carattere; ++j; } carattere = getchar(); } *(*(p + i) + j) = '\0'; return p; } |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:31.