J'essaie de passer des arguments de ligne de commande que je concatène ensuite correctement pour générer des commandes shell afin que je puisse les exécuter en utilisant system() (je sais que ce n'est pas conseillé et il y a de meilleurs moyens pour le faire de cette façon seulement). Mais il y a un problème dans la concaténation des chaînes que je passe Voici le code (j'ai tout imprimé à chaque étape pour avoir une compréhension claire et non je n'ai pas encore écrit les appels system(), d'abord j'ai besoin de trier concaténation dehors):strcat fonctionnant paranormalement
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[]) {
char* path=argv[1];
char* oldName=argv[2];
char* newName=argv[3];
char* command1="cd ";
char* command2="ren ";
printf("\n\n%s\n%s\n%s\n%s\n%s\n",command1,command2,path,oldName,newName);
strcat(command1,path);
printf("\n\n%s\n%s\n%s\n%s\n%s\n",command1,command2,path,oldName,newName);
strcat(oldName," ");
strcat(oldname,newName);
printf("\n\n%s\n%s\n%s\n%s\n%s\n",command1,command2,path,oldName,newName);
strcat(command2,oldName);
printf("\n\n%s\n%s\n%s\n%s\n%s\n",command1,command2,path,oldName,newName);
return 0;
}
Cependant, après la concaténation de la commande 1 au chemin, tout est corrompu.
voir [modifier chaîne littérale] (http://stackoverflow.com/questions/ 5464183/modifying-string-literal) – amdixon
Débarrassez-vous de tout ce crud et utilisez 'snprintf' –
Combien avez-vous appris sur les chaînes de caractères en C jusqu'à maintenant? – immibis