如何把一个文件完整的读入内存并返回首地址呢?
我看书上只写了从文件读内容,像文件写内容.但是如果我把一个文件内容全部读出来,暂时放在哪里呢?用数组还是用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; }