如何在C中读取文件的内容?什么是最简单的方法(最不容易出错,最少的代码行,但是你想解释它)在C中打开一个文件并将其内容读入一个字符串(char *,char [],等等)?
3 回答
开心每一天1111
TA贡献1836条经验 获得超13个赞
我倾向于将整个缓冲区作为原始内存块加载到内存中并自行进行解析。这样我就能最好地控制标准库在多个平台上的作用。
这是我用于此的存根。您可能还想检查fseek,ftell和fread的错误代码。(为清楚起见,省略)。
char * buffer = 0;long length;FILE * f = fopen (filename, "rb");if (f){ fseek (f, 0, SEEK_END); length = ftell (f); fseek (f, 0, SEEK_SET); buffer = malloc (length); if (buffer) { fread (buffer, 1, length, f); } fclose (f);}if (buffer){ // start to process your data / extract strings here... }
RISEBY
TA贡献1856条经验 获得超5个赞
另一个不幸的是高度依赖操作系统的解决方案是内存映射文件。优点通常包括读取的性能和减少的内存使用,因为应用程序视图和操作系统文件缓存实际上可以共享物理内存。
POSIX代码如下所示:
int fd = open("filename", O_RDONLY);int len = lseek(fd, 0, SEEK_END);void *data = mmap(0, len, PROT_READ, MAP_PRIVATE, fd, 0);
另一方面,Windows稍微有点棘手,不幸的是我没有在我面前测试编译器,但功能是由CreateFileMapping()
和提供的MapViewOfFile()
。
- 3 回答
- 0 关注
- 1213 浏览
添加回答
举报
0/150
提交
取消