[c] Enregistrer dans un .txt

Sophie -  
 Utilisateur anonyme -
Bonsoir !!

Je viens de finir un programme en C (en mode console).
Pour résumer, il trie des tableaux de nombres, et finalement, il affiche les résultats (printf).

Je souhaiterais récupérer la totalité de ce qui apparaît à l'écran dans un fichier .txt.
En utilisant fputs, c'est le bazar, je dois modifer et séparer l'affichage de mes données, foutre des sprintf partout pour convertir mes variables int en string (sinon ça marche pas dans le fputs).... 'fin bref mission impossible.

Ya t'il pas moyen de récupérer d'un bloc tout ce qui apparait a l'écran de ma console dans un fichier .txt ?

Merci !

Bonne soirée

Sophie

5 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Tu peux récuperer la sortie sur STDOUT en utilisant une simple rédirection.

programme > resultat.txt

En ce cas au lieu de voir sur la console le résultat, la sortie sera dirigé vers le fichier.

lami20j
0
Radek Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   6
 
Au lieu d'utiliser printf utilise plutot fprintf

Prototype:
int fprintf( FILE * fic,const char * format [argument,...]);
dans stdio.h

Ainsi tu declare au debut de ton programme une variable myFile:

FILE * myfile;

Si tu veux ecrire a l'écran, tu as juste a faire :
myfile = stdout;

Si tu veux ecrire dans un fichier tu fais :
myfile = fopen("fichier.txt", "w+"); /* au debut */
fclose(myfile); /* A la fin */

et tes printf("mon message") tu les remplaces par des fprintf(myfile, "mon message");
Comme cela tu peux soit ecrire a l'ecran soit dans un fichier.
Sinon il y a bien une autre solution pour ne pas toucher à tout tes printf, mais c plus complexe et plus dangereux pour un debutant ... ;)

Bonne continuation !
0
Radek Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   6
 
Un indice pour la 2eme solution : il faut utiliser freopen
0
Utilisateur anonyme
 
J'aimerais bien connaitre ta solution dangereuse pour un débutant.
0
Radek Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   6
 
J'aimerais bien connaitre ta solution dangereuse pour un débutant. 


C'etait une boutade ! :)

C'est aucun cas dangereux, ca n'abimera pas le PC ni la mémoire, ni le disque.
En fait pour etre sincère, je ne me rappelais plus de certaines choses, notamment comment recuperer le vrai stdout apres avoir ecrit dans le fichier pour pouvoir reecrire sur la sortie ecran normale.
Ca m'est reviennu apres : il faut utiliser freopen (disponible dans <stdio.h>) et utiliser dup et/ou dup2 qui eux ne sont disponibles que sous Unix (si ma memoire est bonne).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
 
Ah c'est vrai il y a aussi freopen pour rediriger les flux, je l'avais oublié celui là.
0