Je travaille sur un programme C qui obtient les arguments de la ligne de commande et leur ajoute une extension de fichier.concaténer chaque valeur de argv avec une chaîne
L'exécution sera quelque chose comme ceci: >myprogram file1 file2
et exécutera un autre programme qui utilisera comme argument file1.txt
et file2.txt
. J'ai essayé de faire qui ajouterait l'extension et exécuter une commande (s1 est le chemin et s2 est argv[i]
sur une boucle:
int getfile(char *s1, char *s2){
char *str2 = malloc(sizeof(s2)+3);
strcpy(str2,s2);
strcat(str2,".txt");
execl(s1,"program",str2,NULL);
exit(0);
}
La fonction exécute le programme pour un fichier (>program file1.txt
et >program file2.txt
), mais je devra trouver un moyen de l'exécuter de cette façon (>program file1.txt file2.txt
).
J'ai essayé de modifier directement argv, mais je n'a pas abouti.
Tout conseil?
Utilisez 'strlen' pour la longueur, pas' sizeof'. Vous avez également besoin de quatre caractères supplémentaires, pas trois. – chris
En outre, pour l'ajout de '.txt', vous avez besoin de 5 caractères supplémentaires, et non de 3. –
@ H2CO3, Oui, je suppose que je comptais déjà la valeur null dans' s2', mais l'utilisation de 'strlen' ne l'est pas. – chris