je souhaiterais récupérer des variables utilisées dans mon code C pour les intégrer dans le system("commande unix");
Merci.
je souhaiterais récupérer des variables utilisées dans mon code C pour les intégrer dans le system("commande unix");
Merci.
Bonjour,
Les fonctions sprintf ou strcat peuvent servir à ça.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <string.h> #include <stdio.h> #include <stdlib.h> /* programme qui prend en arguments 1- le nom du programme à appeler 2- l'argurment à passer au programme */ int main(int argc, char *argv[]) { if(argc == 3) { char buffer[256]; if(strlen(argv[1]) + strlen(argv[2]) < (sizeof buffer - 2)) { sprintf("%s %s", argv[1], argv[2]); system(buffer); } else { printf("arguments trop longs\n"); } } else { printf("%s nécessite deux arguments\n", argv[0]); } return 0; }
Voilà la commande que je veux exécuter, et bien sur cela ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 int main(int argc, char *argv[]) { char * chaine; chaine = "2222"; argv[1] = "sed -i '/$chaine/d' test.txt"; argv[1] = chaine; if(argc == 3) { char buffer[256]; if(strlen(argv[1]) + strlen(argv[2]) < (sizeof buffer - 2)) { sprintf("%s %s", argv[1], argv[2]); system(buffer); } else { printf("arguments trop longs\n"); } } else { printf("%s nécessite deux arguments\n", argv[0]); } return 0; }
Je pense que je n'ai pas compris le principe de ton programme.
Il ne faut pas utiliser = pour copier des chaines de caractères.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 char * chaine; chaine = "2222"; argv[1] = "sed -i '/$chaine/d' test.txt"; argv[1] = chaine;
Pourquoi ne pas écrire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 char chaine[64]; char commande[256]; strcpy(chaine, "2222"); sprintf(commande, "sed -i '/%s/d' test.txt", chaine); system(commande);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager