From 7e0f021a9aec35fd8e6725e87e3313b101d26f5e Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Sun, 27 Jan 2008 11:37:44 +0100 Subject: Initial import (2.0.2-6) --- reference/C/CONTRIB/OR_PRACTICAL_C/14_04.c | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 reference/C/CONTRIB/OR_PRACTICAL_C/14_04.c (limited to 'reference/C/CONTRIB/OR_PRACTICAL_C/14_04.c') diff --git a/reference/C/CONTRIB/OR_PRACTICAL_C/14_04.c b/reference/C/CONTRIB/OR_PRACTICAL_C/14_04.c new file mode 100644 index 0000000..ca5c709 --- /dev/null +++ b/reference/C/CONTRIB/OR_PRACTICAL_C/14_04.c @@ -0,0 +1,38 @@ +#include +FILE *save_file = NULL; /* Save input in this file */ +FILE *playback_file = NULL; /* Playback data from this file */ +/******************************************************** + * extended_fgets -- get a line from the input file * + * and record it in a save file if needed * + * * + * Parameters * + * line -- the line to read * + * size -- sizeof(line) -- maximum number of * + * characters to read * + * file -- file to read data from * + * (normally stdin) * + * * + * Returns * + * NULL -- error or end of file in read * + * otherwise line (just like fgets) * + ********************************************************/ +char *extended_fgets(char *line, int size, FILE *file) +{ + extern FILE *save_file; /* file to save strings in */ + extern FILE *playback_file; /* file for alternate input */ + + char *result; /* result of fgets */ + + if (playback_file != NULL) { + result = fgets(line, size, file); + /* echo the input to the standard out so the user sees it */ + (void)fputs(line, stdout); + } else + result = fgets(line, size, file); + + /* did someone ask for a save file */ + if (save_file != NULL) + (void)fputs(line, save_file); + + return (result); +} -- cgit v1.2.3-54-g00ecf