Bonjour,
j'amerais savoir comment je pourrais faire pour récupérer(mettre dans une chaîne de caractère ou autre) ce qui s'affiche sur la console lorsque je fais, par exemple, un
system("dir");
merci
--------------------
Tag [Resolu] ajouté par LFE
Bonjour,
j'amerais savoir comment je pourrais faire pour récupérer(mettre dans une chaîne de caractère ou autre) ce qui s'affiche sur la console lorsque je fais, par exemple, un
system("dir");
merci
--------------------
Tag [Resolu] ajouté par LFE
Salut,
Utilises la fonction popen() :
a++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 char buffer[256]; FILE* cmd = popen ("dir", O_RDONLY); while (fgets, 256, cmd) != NULL) { printf ("DIR : %s", buffer); } pclose (f);
Une façon simple est de rediriger la sortie dans un fichier. Par exemple:
Et puis de lire le fichier produit (ici: dir.txt).
Code : Sélectionner tout - Visualiser dans une fenêtre à part system("dir > dir.txt");
axile
Bonjour,
je voudrais savoir s'il est possible d'aller lire dans un fichier créé lors d'un
system("dir > dir.txt).
(je veux lire le fichier dir.txt)
merci
Certainement que c'est possible, voici un exemple:
axile
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 int main(int argc, char *argv[]) { FILE *fichier; int c; /* Ouvrir le fichier en lecture */ fichier = fopen("dir.txt", "r"); /* Écrire son contenu à l'écran */ while (1) { c = getc(fichier); if (c == EOF) break; putc(c, stdout); } fclose(fichier); return 0; }
Heu...
juste pour signaler que popen() fait ca tout seul sans créer de fichier qu'il faudrat effacer après...
Pourquoi se compliquer la vie ???
Tu as bien raison adiGuba c'est encore plus simple. Cette fonction n'est pas standard (enfin je crois), mais à part ça je suis toujours preneur de solutions simples et élégantes.
axile
Non elle n'est pas standard, mais system("dir") ne l'est pas non plus donc l'un dans l'autre ce n'est pas tres genant.Envoyé par axile
heu...
system() est portable...
c'est system("dir") qui n'est pas portable...
system() est conforme avec : ANSI C, POSIX.2 et BSD 4.3
popen() est conforme avec POSIX.2
Question: combien de compilateur ne sont pas compatible POSIX.2 ???
C'est bien de system("dir") et non de system que je parlait en disant que ce n'etait pas portable. Mais de toute maniere vu que systeme appel l'interpreteur de commande du systeme sur lequel l'application tourne, il me semble assez compromis de fire du code portable avec des system.Envoyé par adiGuba
Concernant les compilateurs non compatible POSIX.2, je ne peut pas te faire une liste exhaustive, mais deja Borland C++ 5 ne l'est pas (tout au moins popen n'apparait pas dans l'aide).
gl : autant pour moi j'ai lu ton post trop vite...
Pour BC++ ca m'étonne qu'il ne soit pas posix !!!
Perso j'utilise gcc même sous windows...
Avec BC++ les fonctions qui ne sont pas compatibles ANSI C ont souvent leur nom précédé d'un trait de soulignement. C'est le cas de popen() qu'on retrouve sous le nom de _popen().
axile
Effectivement j'aurais du y penser a regarder _popen, mais ca ne change pas grand chose au probleme, le code avec popen ne sera pas portable sur BC++.
Partager