我想把文件的全部内容写入缓冲区.该文件实际上只包含一个字符串,我需要将其与字符串进行比较.
哪一个是最有效的选项,即使在linux上也是可移植的.
环境:windows
我想把文件的全部内容写入缓冲区.该文件实际上只包含一个字符串,我需要将其与字符串进行比较.
哪一个是最有效的选项,即使在linux上也是可移植的.
环境:windows
Linux和Windows之间的可移植性是一个令人头疼的问题,因为Linux是一个符合POSIX的系统,通常有一个适合C的高质量工具链,而Windows甚至没有在C标准库中提供很多函数.
然而,如果你想坚持标准,你可以这样写:
#include <stdio.h>
#include <stdlib.h>
FILE *f = fopen("textfile.txt", "rb");
fseek(f, 0, SEEK_END);
long fsize = ftell(f);
fseek(f, 0, SEEK_SET); /* same as rewind(f); */
char *string = malloc(fsize + 1);
fread(string, fsize, 1, f);
fclose(f);
string[fsize] = 0;
在这里,string
将包含文本文件的内容,它是一个正确以0结尾的C字符串.这段代码只是标准的C,它不是特定于POSIX的(尽管它不能保证它能在Windows上工作/编译……)