c语言将文件内容写到内存

char* ContentOfFile(char* file_name)
{
  FILE* file = fopen(file_name, "rb");
  if (!file) {
    printf("打开文件失败\n");
    return NULL;
  }

  //将文件指针移动到文件末尾
  if (fseek(file, 0, SEEK_END) != 0) {
    printf("fseek error\n");
    return NULL;
  } 

  //求出当前文件指针距离文件开始的字节数
  long size = ftell(file); 
  if (size == -1) {
    printf("获取文件大小失败\n");
    return NULL;
  }

  //将文件指针返回到文件开始处
  if (fseek(file, 0, SEEK_SET) != 0) {
    printf("fseek error\n");
    return NULL;
  } 

  //分配内存
  char* file_buffer = (char*)malloc(size+1);
  if (file_buffer == NULL) {
    printf("内存分配失败\n");
    return NULL;
  }

  if (fread(file_buffer, size, 1, file) == 0) {
    printf("读取文件错误\n");
    return NULL;
  }
  file_buffer[size] = '\0'; //为了更加的安全

  fclose(file);

  // printf("%s\n", file_buffer);

  return file_buffer;
}

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值