[C++] récuperer la réponse d'une commande DOS
Fermé
mercre
Messages postés
1
Date d'inscription
jeudi 19 juillet 2007
Statut
Membre
Dernière intervention
19 juillet 2007
-
19 juil. 2007 à 15:53
Rémi - 23 avril 2008 à 13:19
Rémi - 23 avril 2008 à 13:19
A voir également:
- [C++] récuperer la réponse d'une commande DOS
- Invite de commande - Guide
- Recuperer message whatsapp supprimé - Guide
- Recuperer video youtube - Guide
- Commande terminal mac - Guide
- Comment récupérer un compte facebook piraté - Guide
1 réponse
comment stocker dans des variables C++ les résultats de la commande DOS, ça je sais pas,
et c'est justement ce que je cherche aussi.
Par contre, pour lire la première ligne d'un fichier en DOS,
il suffit de faire :
set /p MAVARIABLE=(Chargement ...)<monfichier.txt
il ne reste plus qu'à l'afficher : "echo %MAVARIABLE%" ou à la récupérer en C++
je ne sais pas comment.
comment insérer une variable C++ dans une commande DOS :
Je suppose que tu utilise la commande : "int system(const char *command)" pour
exécuter du code MS-DOS en C++.
Une solution serait celle ci (pour afficher du texte par exemple) :
#include <iostream>
int (*MSDOSEx) (const char *command) = system;
const unsigned char NULL_CHAR = 0x00;
const char M_BEGINN[] = "ECHO ";
const long M_BEGIN_LENGTH = 5;
void Print(char*);
long Len(char*);
void Print(char *str)
{
long M_NUM; char *M_RESULT;
M_RESULT = (char*) malloc(sizeof(char) * (M_BEGIN_LENGTH + Len(str) + 1));
for (M_NUM = 0; M_NUM < M_BEGIN_LENGTH; M_NUM++)
M_RESULT[M_NUM] = M_BEGINN[M_NUM];
for (M_NUM = 0; M_NUM < Len(str); M_NUM++)
M_RESULT[(M_NUM + M_BEGIN_LENGTH)] = str[M_NUM];
M_RESULT[(M_NUM + M_BEGIN_LENGTH)] = (char) NULL_CHAR;
MSDOSEx(M_RESULT); free(M_RESULT); return;
}
long Len(char *str)
{
unsigned char *M_BUFFER; M_BUFFER = (unsigned char*) str;
long M_LENGTH; M_LENGTH = 0;
while (*M_BUFFER != NULL_CHAR)
{ M_LENGTH++; M_BUFFER++; }
return M_LENGTH;
}
int main(int argc, char *argv[])
{
Print("Hello world");
system("PAUSE");
return 0;
}
Voilà. En fait, je ne respecte ici pas vraiment la déclaration de la fonction system,
car je ne lui donne pas une constante (const), mais certains compilateurs l'accèptent
(le mien en tout cas (Dev-C++)).
J'espère avoir en partie répondu à ta question,
et j'aimerais aussi connaître la réponse à la question :
comment stocker dans des variables C++ les résultats de la commande DOS ?
Merci d'avance.
et c'est justement ce que je cherche aussi.
Par contre, pour lire la première ligne d'un fichier en DOS,
il suffit de faire :
set /p MAVARIABLE=(Chargement ...)<monfichier.txt
il ne reste plus qu'à l'afficher : "echo %MAVARIABLE%" ou à la récupérer en C++
je ne sais pas comment.
comment insérer une variable C++ dans une commande DOS :
Je suppose que tu utilise la commande : "int system(const char *command)" pour
exécuter du code MS-DOS en C++.
Une solution serait celle ci (pour afficher du texte par exemple) :
#include <iostream>
int (*MSDOSEx) (const char *command) = system;
const unsigned char NULL_CHAR = 0x00;
const char M_BEGINN[] = "ECHO ";
const long M_BEGIN_LENGTH = 5;
void Print(char*);
long Len(char*);
void Print(char *str)
{
long M_NUM; char *M_RESULT;
M_RESULT = (char*) malloc(sizeof(char) * (M_BEGIN_LENGTH + Len(str) + 1));
for (M_NUM = 0; M_NUM < M_BEGIN_LENGTH; M_NUM++)
M_RESULT[M_NUM] = M_BEGINN[M_NUM];
for (M_NUM = 0; M_NUM < Len(str); M_NUM++)
M_RESULT[(M_NUM + M_BEGIN_LENGTH)] = str[M_NUM];
M_RESULT[(M_NUM + M_BEGIN_LENGTH)] = (char) NULL_CHAR;
MSDOSEx(M_RESULT); free(M_RESULT); return;
}
long Len(char *str)
{
unsigned char *M_BUFFER; M_BUFFER = (unsigned char*) str;
long M_LENGTH; M_LENGTH = 0;
while (*M_BUFFER != NULL_CHAR)
{ M_LENGTH++; M_BUFFER++; }
return M_LENGTH;
}
int main(int argc, char *argv[])
{
Print("Hello world");
system("PAUSE");
return 0;
}
Voilà. En fait, je ne respecte ici pas vraiment la déclaration de la fonction system,
car je ne lui donne pas une constante (const), mais certains compilateurs l'accèptent
(le mien en tout cas (Dev-C++)).
J'espère avoir en partie répondu à ta question,
et j'aimerais aussi connaître la réponse à la question :
comment stocker dans des variables C++ les résultats de la commande DOS ?
Merci d'avance.