如何读取存储在txt文件中的所有内容?
如果我有一个带有文字的txt文件,并且我想阅读所有文字并将其存储为字符串,该怎么办?
如果我使用fscanf(in, "%s", string)
,我只会读第一个单词,而当有第一个空格时,fscanf
会停止工作。如何阅读所有单词并将其存储在字符串中?
答案 0 :(得分:2)
如果您要问如何将文件的所有内容都放到内存中的单个缓冲区中,这是一种方法(假设内存中有足够的空间):
FILE *fp;
char *buffer = NULL;
size_t len, num_read;
fp = fopen("myfile", "r");
if(fp == NULL) // handle error...
{}
fseek(fp, 0, SEEK_END);
len = ftell(fp);
rewind(fp);
buffer = malloc(len + 1);
if(buffer == NULL) // handle error...
{}
num_read = fread(buffer, 1, len, fp);
fclose(fp);
buffer[num_read] = '\0';
// buffer now contains the entire content of your file
use(buffer);
free(buffer);
buffer = NULL;