Hi all. I am learning how to use the debugger.
Here is a program that I wrote in the early days of learning C for displaying the contents of a text file to the screen.
I had always thought that it would grab 100 characters of a line(at a time) and then output to the screen, looping repeatedly, until fgets() == NULL. To my surprise, it seems to be storing several lines somewhere, and then only outputting them when fgets() == NULL. So it seems to output only once. Why is it doing this, and how can it be doing this when the buffer size is only 100?
Thanks.
Code:#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_FILE_LENGTH 40 #define MAX_STRING_LENGTH 100 int main(void) { int count, file_length, string_length; char filename[MAX_FILE_LENGTH], line[MAX_STRING_LENGTH]; FILE *openfile; puts("Enter file to open"); fgets(filename, MAX_FILE_LENGTH, stdin); string_length = strlen(filename); filename[string_length-1] = '\0'; puts(filename); if ((openfile = fopen(filename, "r")) != NULL) puts("File opened successfully\n"); else { puts("Error opening file"); exit(1); } while(fgets(line, MAX_STRING_LENGTH, openfile ) != NULL) { printf("%s", line); } fclose(openfile); return 0; }



9Likes
LinkBack URL
About LinkBacks



