C modifying printf () to output to a file
c, linux, printf, unix
Solution
This is usually done with I/O-redirection (... >file).
Check this little program:
#include <stdio.h>
#include <unistd.h>
int main (int argc, char *argv[]) {
if (isatty (fileno (stdout)))
fprintf (stderr, "output goes to terminal\n");
else
fprintf (stderr, "output goes to file\n");
return 0;
}
ottj@NBL3-AEY55:~ $ ./x
output goes to terminal
ottj@NBL3-AEY55:~ $ ./x >yy
output goes to file
Problem
Is there a way to modify the `printf` in order to output string on a file rather than to the console? I tried looking up something on the Internet and found calls like `dup`, `dup2` and `fflush` that might be associated with this. EDIT: Maybe I wasn't clear.. the thing is that this was in a C exam question.. the question is as follows: Explain how a program that normally output strings to screen (using `printf()`) can be made to output string to a file, without changing any code in the mentioned program.