Vous n'êtes pas identifié(e).
Pages : 1
Bonjour à tous, gros débutant en C, je me tourne vers vous. Je fais des petits programmes pour tester ce que j'apprends, la je voulais tester un peu la fonction system(). J'essaie de passer une variable en argument d'une commande, en cherchant un peu, j'ai trouvé snprintf(), que j'ai essayé dans le "code "ci-dessous. ça ne marche qu'à moitié, car j'obtiens un résultat bizarre(j'ai mis ce résultat en commentaire dans le code). Si quelqu'un pouvait me dire ou est mon erreur ou me conseiller une autre façon de faire. Merci d'avance.
Désolé si ma question est vraiment c...e, mais je suis vraiment un débutant total en informatique et encore plus en programmation. Si c'est vraiment trop bete, lancé moi un rtfm ou un goggle est ton ami.
#include<stdio.h>
#include<stdlib.h>
#include<stdarg.h>
int main(int argc,char *argv[]){
char B[15]={0};
char A[3]="fif";
printf("%s\n",A);
snprintf(B, 15,"echo %s",A);
printf("%s\n",B); // la j'obtient echo fifecho??
system("ls");
system("cd ..;ls");
system(B); // la commande echo fonctionne mais affiche fifecho
system(argv[1]);
return 0;
Oublie que t'as aucune chance, vas y fonce. Sur un malentendu ça peut marcher.
Hors ligne
The functions snprintf() and vsnprintf() write at most size bytes (including the terminating null byte ('\0')) to str. maybe ça t'aidera
Mess With The Bests
Die Like The Rest
Hors ligne
Merci pour ta réponse, en réduisant la taille de A et B pour rester dans cette limite de 1 byte ça a marché. Si je comprend bien ça provoquait un débordement mémoire, d' ou le "echo fifecho"? Je vais devoir trouver une autre fonction pour ne pas être limité en taille. En tous cas merci encore de ta réponse à ma question à la c.. . Et vu mon niveau, c'est loin d'être la derniere.
Oublie que t'as aucune chance, vas y fonce. Sur un malentendu ça peut marcher.
Hors ligne
#include<stdio.h>
int main(int argc,char *argv[]){
char A[3];
puts("Ne pas oublier le dernier byte");
printf("%d %d\n", sizeof A, sizeof "fit");
return 0;
}
Hors ligne
Pages : 1