Vis printf-output i konsol og log til tekstfil samtidig i C på Windows

Hvordan kan output fra printf i et C-program på Windows både vises i konsollen og logges i en tekstfil samtidig?

For at få output fra printf i et C-program på Windows til både at vises i konsollen og logges i en tekstfil samtidig, kan du omdirigere standard output til en fil med freopen og bruge en brugerdefineret funktion som dual_print til at skrive til begge steder.

Hvordan kan output fra printf i et C-program på Windows både vises i konsollen og logges i en tekstfil samtidig?

For at få output fra printf i et C-program på Windows til både at vises i konsollen og logges i en tekstfil samtidig, kan du følge disse trin:

  1. Omdiriger output til en fil:
    • Brug freopen til at omdirigere standard output (stdout) til en fil.
    • Eksempel:
      freopen("logfile.txt", "w", stdout);
  2. Brug en funktion til at skrive til både konsol og fil:
    • Opret en brugerdefineret funktion, der skriver til både konsol og fil.
    • Eksempel:
      
      void dual_print(const char *format, ...) {
          va_list args;
          va_start(args, format);
      
          // Print to console
          vprintf(format, args);
      
          // Print to file
          FILE *file = fopen("logfile.txt", "a");
          if (file != NULL) {
              vfprintf(file, format, args);
              fclose(file);
          }
      
          va_end(args);
      }
              
  3. Erstat printf med den brugerdefinerede funktion:
    • Brug den nye dual_print funktion i stedet for printf.
    • Eksempel:
      dual_print("Dette er en test: %d
      ", 42);

Ved at følge disse trin kan du sikre, at output fra dit C-program både vises i konsollen og logges i en tekstfil samtidig.