我的程序读取跨越多行的文件。我想将文件的内容保存在一个字符串中。
我不知道执行前文件的行数,但我已将行大小修改为MAX_LINE_LEN。
你怎么能这样做?
答案 0 :(得分:27)
函数fread()
不关心换行符。以下代码读取input_file_name
的内容并将其保存到数组file_contents
:
char *file_contents;
long input_file_size;
FILE *input_file = fopen(input_file_name, "rb");
fseek(input_file, 0, SEEK_END);
input_file_size = ftell(input_file);
rewind(input_file);
file_contents = malloc(input_file_size * (sizeof(char)));
fread(file_contents, sizeof(char), input_file_size, input_file);
fclose(input_file);
如果input_file_name
包含\0
字符,则只能创建此数组的字符串。如果没有,请将最后三行更改为:
file_contents = malloc((input_file_size + 1) * (sizeof(char)));
fread(file_contents, sizeof(char), input_file_size, input_file);
fclose(input_file);
file_contents[input_file_size] = 0;
答案 1 :(得分:3)
1)用fstat
计算出文件的大小。
2)分配一个长度为+ 1
的归零缓冲区 3)使用fread
将文件内容读入缓冲区