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

rah*_*hmu 13 c string file

可能重复:
以C语言获取文件内容的最简单方法

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

在执行之前我不知道文件的行数,但是我已经将行大小修改为MA​​X_LINE_LEN.

你怎么能这样做?

Den*_*nis 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);
Run Code Online (Sandbox Code Playgroud)

如果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;
Run Code Online (Sandbox Code Playgroud)