如何把一个文件完整的读入内存并返回首地址呢?
我看书上只写了从文件读内容,像文件写内容.但是如果我把一个文件内容全部读出来,暂时放在哪里呢?用数组还是用malloc在堆里申请内存,应该申请多大的空间来存放呢?
我总不能用一个while(1)循环,然后fgetc一直读到EOF这种方式来计数吧?
c的标准库里有预定义的方法吗?
程序代码:#include <stdio.h>
#include <stdlib.h>
int main() {
FILE *file = fopen("example.txt", "rb"); // 以二进制模式打开文件
if (!file) {
perror("Failed to open file");
return EXIT_FAILURE;
}
// 移动到文件末尾
fseek(file, 0, SEEK_END);
// 获取文件大小
long fileSize = ftell(file);
// 移回文件开头
fseek(file, 0, SEEK_SET);
// 分配内存,加1用于存储空字符(如果文件内容是字符串)
char *buffer = (char *)malloc(fileSize + 1);
if (!buffer) {
perror("Failed to allocate memory");
fclose(file);
return EXIT_FAILURE;
}
// 读取文件内容到缓冲区
size_t bytesRead = fread(buffer, 1, fileSize, file);
if (bytesRead != fileSize) {
perror("Failed to read file");
free(buffer);
fclose(file);
return EXIT_FAILURE;
}
// 如果文件内容是字符串,添加空字符
// 注意:如果文件包含二进制数据,则不应添加空字符
buffer[fileSize] = '\0';
// 在这里可以使用buffer,例如打印它(如果它是字符串)
// printf("%s\n", buffer); // 仅当文件内容是字符串时才这样做
// 释放内存和关闭文件
free(buffer);
fclose(file);
return EXIT_SUCCESS;
}