为了账号安全,请及时绑定邮箱和手机立即绑定

如何在C中读取文件的内容?

如何在C中读取文件的内容?

C
浮云间 2019-08-08 10:20:37
如何在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...
  }


查看完整回答
反对 回复 2019-08-08
?
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()


查看完整回答
反对 回复 2019-08-08
  • 3 回答
  • 0 关注
  • 1213 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信