PDA

Visualizza la versione completa : [C] Modificare i valori del parametro *argv[]


Ratchet
14-08-2011, 11:31
Ciao a tutti!
Sto realizzando un programma che confronta l'array di stringhe *argv[] cn un altro array di stringe che ho chiamato *comparisons[].

Ecco il codice:




include <stdio.h>

char *comparisons[] = {"ciao", "lettore", "peppe", '\0'};

int main(int argc, char *argv[]){
int i, f, h, i;

if (argc == 1)
printf("Non e' stato inserito nessun argomento!");
else {
for (i = 1; i < argc; i++){
for (f = 0; comparisons[f] != '\0'; f++){
if (strcmp(argv[i], comparisons[f]) == 0){
for (h = 0; ;h++){

}
}
}
}
}

else
return 0;
}


Il programma, come ho già accennato, confronta le stringhe contenute in *comparisons[] con quelle contenute in *argv[]. Ogni volta che viene trovata in *argv[] una stringa contenuta in *comparisons[], dovrei eliminare da *argv[] quella stringa, ridimensionando così *argv[] facendo slittare tutte le altre stringhe che sono registrate nelle posizioni successive.

L'unico problema è che non riesco a modificare il valore delle stringhe... ho letto da qualche parte che il valore delle stringhe non si può modificare (a meno che non siano contenute in array), quindi volevo chiedervi:
Qualcuno di voi potrebbe aiutarmi a risolvere il dilemma?

Grazie in anticipo per le eventuali risposte che vorrete darmi!

XAlbeX
15-08-2011, 19:20
Potresti fare un secondo array di puntatori a char, e ci metti dentro solo gli indirizzi delle stringhe che non scarti.

Ratchet
19-08-2011, 22:11
E per sostituirlo ad *argv[] devo far puntare il secondo elemendo di argv a quello del nuovo array?

oregon
20-08-2011, 10:11
Per quale motivo devi agire su argv? Non ha senso.

Utilizza un array di puntatori alle stringhe che ti interessano, come ti è stato suggerito, senza toccare argv.

Ratchet
20-08-2011, 11:42
ho letto qualcosa sulle gtk su linux e ho letto di una funzione che, tra le tante cose, eliminava da *argv[] determinate parole... mi sono chiesto come fosse possibile, per questo ho cominciato a scrivere questo miniprogramma... è più una cosa a scopo didattico che altro!

oregon
20-08-2011, 11:55
I parametri in ingresso in argv sono utilizzati dal programma, che li legge e ne fa l'uso che vuole.

Non ha alcun senso "eliminarli" ( o tentare di farlo anche solo per studio ) ...

Ratchet
20-08-2011, 12:02
va bene... RICEVUTO! :)

Loading