如何将整个文件加载到C中的字符串中

时间:2011-10-22 01:01:05

标签: c string file

  

可能重复:
  Easiest way to get file's contents in C

我的程序读取跨越多行的文件。我想将文件的内容保存在一个字符串中。

我不知道执行前文件的行数,但我已将行大小修改为MA​​X_LINE_LEN。

你怎么能这样做?

2 个答案:

答案 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将文件内容读入缓冲区