Bonjour,
j'utilise actuelement la fonctionqui me permet, dans mon application dos, de récupérer à l'écran l'arborécence, mais comment récupérer le texte affiché?Code:system("dir")
merci d'avance
Version imprimable
Bonjour,
j'utilise actuelement la fonctionqui me permet, dans mon application dos, de récupérer à l'écran l'arborécence, mais comment récupérer le texte affiché?Code:system("dir")
merci d'avance
il faut que tu utilises les tubes
y a rien de plus berk que de faire un system(dir)
si tu veux lister des fichiers : http://c.developpez.com/faq/vc/?page=Fichiers
si tu veux récupérer la sortie d'un programme : http://c.developpez.com/faq/vc/?page...CatchDosOutput
J'ai essayé le second exemple cité ici:
et j'ai un pb: &api n'est pas définit, comme je suis avec une application console, si je passe en application windows ça marchera ? je fais comment pour mes printf si c'est une application windows(la question ne se pose peux être pas, j'ai jamais fait de prg en win32)?Citation:
Envoyé par nico-pyright(c)
c'est pas &api, mais &pi ... ptite faute dans la faq ...
Farscaaaape ?:mrgreen:
merci, mais je n'arrive pas à en faire ce que je veux:
par exemple si je fais executeCmdWithRedirection("dir", "sortie.txt"), j'optiens rien dans sortie...
alors, au risque de me répeter, il ne faut pas utiliser dir
Si tu veux lister les répertoires, il faut utiliser l'API Win32
De plus, c'est normal que la fonction que tu veux utiliser ne marche pas, car "dir" est une commande dos, qui ne fonctionne que grace à l'interpréteur de commande. Pour ce genre de cas, il faut utiliser la premiere solution, mais je répete que pour lister, il vaut mieux passer par l'api win32
oui, oui je suis d'accord, le 'dir' n'est qu'un exemple, en fait je veux pouvoir utiliser toute les commande dos et récupérer les sotie, pas dans un fichier mais dans une chaine de caractère, ce qui corse un peu le truc, désolé de t'avoir fais répété, j'ai pas été clair sur ce que je voulais
il te suffit, en utilisant la premiere solution, d'ouvrir le fichier et de le copier dans une chaine
dans ce cas j'ai un nouveau problème:
je n'arrive pas à tout récupérer et tout afficher du fichier texte:
le contenu du fichier texte:
mon code :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Le volume dans le lecteur C n'a pas de nom. Le numro de srie du volume est 1CPC-A1CO Rpertoire de C:\Program Files\Microsoft Visual Studio\MyProjects\test 08/06/2006 17:08 <REP> . 08/06/2006 17:08 <REP> .. 08/06/2006 17:08 <REP> Debug 08/06/2006 17:08 2ÿ542 main.cpp 08/06/2006 17:08 14ÿ196 result.txt 08/06/2006 16:28 4ÿ199 test.dsp 08/06/2006 16:28 533 test.dsw 08/06/2006 16:28 25ÿ600 test.ncb 08/06/2006 17:08 880 test.plg 6 fichier(s) 47ÿ950 octets 3 Rp(s) 9ÿ731ÿ588ÿ096 octets libres
résultat:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void lecture (void) { FILE *fichier ; int i ; float x[25], y ; char text[3000]; fichier = fopen ("result.txt", "rt") ; if (fichier == NULL) { printf ("impossible de créer le fichier mon_fichier.txt\n") ; exit (0) ; } fgets(text,3000,fichier); printf("%s ",text); fclose (fichier) ;
c'est comme s'il s'arrêtai à la première \nCode:Le volume dans le lecteur C n'a pas de nom.
comment faire?
merci d'avance
c'est normal, une chaine de caractère se termine par un \0
donc, quand il en trouve un, il n'affiche pas ce qu'il y a derriere, meme s'il y a quelque chose
de plus, pour la manipulation des fichiers, je te conseille de lire http://c.developpez.com/faq/vc/?page...#WorkWithFiles et les suivantes
notamment la mise en buffer
Effectivement, c'est le comportement normal de fgets.Citation:
c'est comme s'il s'arrêtai à la première \n
Il faut utiliser fgets dans une boucle.
Ok mon code marche pour récupérer les sorties de programme, mais j'ai pas l'impression que c'est ce qu'il faut, je m'explique:
quand je fais un "dir" je récupère bien l'affichage mais si je tape "@echo bonjour" je ne récupère pas "bonjour" (sortie dos prévue), par exemple. Même chose pour une commande non valide. Bref je pense qu'il faut changer pour une autre méthode... des idées?.. je sèche..