Redirection de la sortie vers un fichier [Résolu]

Signaler
Messages postés
17
Date d'inscription
mardi 30 septembre 2014
Statut
Membre
Dernière intervention
21 janvier 2015
-
 patchouramria -
Salut mes amis,
j'aimerai envoyer les resultats de mon programme lors de l'execution(le resultat affichée sur le console) vers une fichier texte, je fait une recherche mais je ne trouve rien concernant le langage C.
merci de m'aider :)

4 réponses

Messages postés
3839
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
15 avril 2021
121
Bonjour.

Si tu es en ligne de commande, tu lances ton exécutable et tu ajoutes un "> fichier".
Exemple:

Windows:

programme.exe > monfichier.txt


Linux:

./programme > monfichier.txt


Si tu veux le faire en C, tu peux t'en sortir à coup de "dup()" et "dup2()", mais c'est bien trop compliqué pour ton niveau actuel.
Le mieux est d'utiliser des fichiers directement (via fopen) au lieu d'écrire sur la sortie standard.

__________________________________________________________________________________________________

Améliorez votre expérience CodeS-SourceS avec ce plugin:
http://codes-sources.commentcamarche.net/forum/affich-10000111-plugin-better-cs-2#cptpingu-signature
Messages postés
17
Date d'inscription
mardi 30 septembre 2014
Statut
Membre
Dernière intervention
21 janvier 2015
1
merci beaucoup :)
Messages postés
5363
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
30 avril 2021
110
Salut,

Sinon en C et sans passer par "dup" tu peux également utiliser la fonction "freopen"

#include <stdio.h>
#include <stdlib.h>

void print_str(const char* str) {
  printf("%s", str);
}

void myexit(void) {
  fclose(stdout);
}

int main(int argc, char** argv) {
  FILE *out = freopen("./out.txt", "w", stdout);
  if (!out) { 
    perror("freopen"); 
    exit (EXIT_FAILURE); 
  } 
  stdout = out;// maintenant stdout ira dans le fichier out.txt
  // pour fermer proprement le fichier.
  atexit(myexit);

  // affichage en direct
  printf("Test 1\n");
  // en passant par une fonction
  print_str("Test 2\n");

  return EXIT_SUCCESS;
}


merci beaucoup :)