summaryrefslogtreecommitdiff
path: root/reference/C/CONTRIB/OR_PRACTICAL_C/14_02.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/CONTRIB/OR_PRACTICAL_C/14_02.c')
-rw-r--r--reference/C/CONTRIB/OR_PRACTICAL_C/14_02.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/OR_PRACTICAL_C/14_02.c b/reference/C/CONTRIB/OR_PRACTICAL_C/14_02.c
new file mode 100644
index 0000000..a88a33d
--- /dev/null
+++ b/reference/C/CONTRIB/OR_PRACTICAL_C/14_02.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+/*
+ * The main program will open this file if -S is on
+ * the command line.
+ */
+FILE *save_file = NULL;
+/********************************************************
+ * 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)
+{
+
+ char *result; /* result of fgets */
+
+ result = fgets(line, size, file);
+
+ /* did someone ask for a save file */
+ if (save_file != NULL)
+ (void)fputs(line, save_file);
+
+ return (result);
+}