I have a text file named test.txt
I want to write a C program that can read this file and print the content to the console (assume the file contains only ASCII text).
I don’t know how to get the size of my string variable. Like this:
char str[999];
FILE * file;
file = fopen( "test.txt" , "r");
if (file) {
while (fscanf(file, "%s", str)!=EOF)
printf("%s",str);
fclose(file);
}
The size 999 doesn’t work because the string returned by fscanf can be larger than that. How can I solve this?
The simplest way is to read a character, and print it right after reading:
cisintabove, sinceEOFis a negative number, and a plaincharmay beunsigned.If you want to read the file in chunks, but without dynamic memory allocation, you can do:
The second method above is essentially how you will read a file with a dynamically allocated array:
Your method of
fscanf()with%sas format loses information about whitespace in the file, so it is not exactly copying a file tostdout.