user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 18-10-2015 15:56:48

newbe1keynooB
Membre

question de noob

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

#2 18-10-2015 18:27:40

ZeR0-@bSoLu
Membre

Re : question de noob

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

#3 18-10-2015 19:42:39

newbe1keynooB
Membre

Re : question de noob

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

#4 01-01-2016 19:33:58

Dam's
Membre

Re : question de noob

#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;
}

smile

Hors ligne

Pied de page des forums