近期,有同事问我怎么用C实现将文件的内容读入内存,然后进行处理。我想了想,觉得比较简单,就把代码写出来了,现在保存起来,以便以后在工作中使用。
程序功能:
将文件的内容全部读入内存中。
#include <stdio.h> #include <stdlib.h> #define VERSION "1.0.0.1" int main(int argc, char ** argv) { printf("process begin at [%p]\n",(void*)&main); if(argc == 2 && (strncmp(argv[1],"-v",2) == 0 || strncmp(argv[1],"-V",2) == 0 ) || strncmp(argv[1],"--v",3) == 0 ) { printf("version:\t[%s]\nbuild time:\t[%s %s]",VERSION, __DATE__,__TIME__); return 0; } if (argc != 2) { printf("usage:\n\t%s fileNameWithPath",argv[0]); return 0; } FILE *p_file = NULL; // 打开文件 p_file = fopen(argv[1],"r"); if(!p_file) { printf("open file [%s] error\n", argv[1]); return -1; } // 计算出文件的大小 fseek(p_file,0,SEEK_END); long file_size = ftell(p_file); printf("file size is [%d]\n",file_size); // 将指针复位 fseek(p_file,0,SEEK_SET); //将文件的内容读入内存 char *tmp = (char *)malloc(file_size + 1); int nReadSize = fread(tmp,1,file_size,p_file); printf("read from file length [%d], content is [%s]\n", nReadSize, tmp); fclose(p_file); free(tmp); return 0; }
结果略。