I'm trying to read 4 characters from a file, and then output them to the screen.
the file contains:
abcdefgh
This is my basic code:
char *filename = "file.txt";
char *line[5];
FILE *fp = fopen(filename, "r");
fread (line, sizeof(char), 4, fp);
line[4] = '\0';
printf("line: %s\n", line);
The output is abcdW
Why is the last character of my output always screwed up?
My goal is to (eventually) read in 50 characters, print to screen, then read in another
50 characters, etc.
I just can't figure out why the 5th character which is supposed to be null, gets printed
all scewed up.
Thanks!
|
Ambitious contributor
|
|
| 5Feb2008,21:56 | #2 |
|
Quote:
Originally Posted by endfx Also, sizeof(char) is always 1 since the sizeof operator returns sizes in multiples of the size of a char (which I believe is supposed to represent the smallest addressable unit of memory on the machine, which on PCs is 1 8-bit byte). fgets is more appropriate for reading chars. P.S., remember to use a code block next time to properly display your code. |
