使用c标准中的文件操作函数,全部读取后以16进制的格式输出到终端(这是今天面试中笔试中出现的题目),以下是我根据自己的理解写出的,不当之处欢迎批评指正。
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 //使用c标准中的文件操作函数,全部读取后以16进制的格式输出到终端 6 7 int main(int argc,char* argv[]) 8 { 9 FILE* fp = fopen("sizeofSTRUCT.cpp","r"); 10 if(NULL == fp) 11 { 12 printf("%s\n","fopen() ERROR!!!"); 13 return -1; 14 } 15 16 long curPos,longth; 17 //获取文件指针的初始位置 18 curPos = ftell(fp); 19 20 //获取文件的大小,以便后续申请内存 21 //fseek()后文件指针将至于指定位置,本次执行后文件指针位于末尾 22 fseek(fp,0,SEEK_END); 23 longth = ftell(fp); 24 25 //将文件指针置于文件开头,以便后续读取文件内容 26 fseek(fp,0,SEEK_SET); 27 28 char* buff = (char*)malloc(longth+1); 29 memset(buff,0,longth+1); 30 31 //以字符串的格式输出文件内容 32 fread(buff,longth,1,fp); 33 printf("%s\n",buff); 34 35 //以16进制的格式输出 36 int i = 0; 37 for(; i< longth+1;++i) 38 printf("%x ",(buff+i)); 39 40 printf("\n"); 41 42 free(buff); 43 buff = NULL; 44 45 return 0; 46 }