PDA

View Full Version : [C] Suggerimento per rinominare argomento argv[]


51078
07-02-2007, 17:38
Salve a tutti,
mi sto perdendo in un bicchiere d'acqua con questa elaborazione da fare con il parametro passato da riga di comando.

In pratica devo prendere il nome del file passato da riga di comando, ad es.

nomecomando nomefile.ext

e creare in vari file che abbiano come nome :

nomefile.ext1
nomefile-opt.ext
ecc..


In pratica dovrei eliminare gli ultimi quattro caratteri dalla stringa che sta in argv[1] e poi aggiungere delle stringhe predefinite per poi aprire in scrittura i relativi file.

In pratica non riesco a trovare la procedura corretta, di solito non uso il C per la manipolazione di stringhe, ma questa volta ci sono costretto... :(

Mi dareste cortesemente una mano? :cry: ;)

Ziosilvio
07-02-2007, 18:15
Vediamo se ricordo a braccio (sono "un po' tanto" arrugginito col C):
- crea un array di tanti char * quanti te ne servono,
- fai le malloc opportune,
- fai una cosa tipo strncpy(stringa[j],argv[1],strlen(argv[1])-4) per copiarci dentro la prima parte del nome, e
- usa strcat(stringa[j],suffisso[j]) per completare correttamente i nuovi nomi.

andbin
07-02-2007, 18:16
In pratica dovrei eliminare gli ultimi quattro caratteri dalla stringa che sta in argv[1] e poi aggiungere delle stringhe predefinite per poi aprire in scrittura i relativi file.Usa la funzione standard strrchr() per cercare l'ultima occorrenza del '.' nella stringa.
char *nome = argv[1];
char *est = "";
char *p;

if ((p = strrchr (argv[1], '.')) != NULL)
{
*p = '\0';
est = p+1;
}Dopodiché componi un nuovo nome come vuoi.

51078
07-02-2007, 20:01
Vediamo se ricordo a braccio (sono "un po' tanto" arrugginito col C):
- crea un array di tanti char * quanti te ne servono,
- fai le malloc opportune,
- fai una cosa tipo strncpy(stringa[j],argv[1],strlen(argv[1])-4) per copiarci dentro la prima parte del nome, e
- usa strcat(stringa[j],suffisso[j]) per completare correttamente i nuovi nomi.

In questo modo ci avevo già provato, ma non ottengo il risultato voluto.... :muro:
In effetti sono un pochino (tanto) arruginito anche io con il C....

51078
07-02-2007, 20:04
Usa la funzione standard strrchr() per cercare l'ultima occorrenza del '.' nella stringa.
char *nome = argv[1];
char *est = "";
char *p;

if ((p = strrchr (argv[1], '.')) != NULL)
{
*p = '\0';
est = p+1;
}Dopodiché componi un nuovo nome come vuoi.

Cosi adesso provo e ti faccio sapere.... :)

51078
07-02-2007, 20:23
Funziona!!!! :D :D :D :D

Grazie mille!!!!!!!!!!!!! :ave: :ave: :ave: :ave: