I have a file with multiple strings, each string on a separate line. All strings are 32 character long (so 33 with the \'\\n\' at the end).
I am trying to read all t
You code isn't working because you are only allocating space for lines of 30 characters plus a newline and a null terminator, and because you are only printing out one line after feof()
returns true.
Additionally, feof()
returns true only after you have tried and failed to read past the end of file. This means that while (!feof(fp))
is generally incorrect - you should simply read until the reading function fails - at that point you can use feof()
/ ferror()
to distinguish between end-of-file and other types of failures (if you need to). So, you code could look like:
char line[34];
while (fgets(line, 34, fp) != NULL) {
printf("%s", line);
}
If you wish to find the first '\n'
character in line
, and replace it with '\0'
, you can use strchr()
from
:
char *p;
p = strchr(line, '\n');
if (p != NULL)
*p = '\0';