1.用fgetc计算一个文件的大小,要求封装成函数
#includeint count(FILE* fp){ //定义计数函数 char c=0; int count=0; while((c=fgetc(fp))!=EOF){ printf("%c",c); count++; } return count; } int main(int argc, const char *argv[]) { FILE* fp=fopen("./txt.txt","r"); //txt.txt文件为自己输入文件 if(fp==NULL){ perror("fopen"); return -1; } int num=count(fp); printf("该文件大小为%d字节n",num); return 0; }
代码结果检验:
2.用fgetc计算一个文件有几行,要求封装成函数(linux操作系统以n结尾,就算是最后一行也有一个'n')
#includeint count(FILE* fp){ char c=0; int count=0; while((c=fgetc(fp))!=EOF){ printf("%c",c); if(c=='n'){ count++; } } return count; } int main(int argc, const char *argv[]) { FILE* fp=fopen("./txt.txt","r"); if(fp==NULL){ perror("fopen"); return -1; } int num=count(fp); printf("该文件有%d行n",num); return 0; }
代码结果检验:
3.用fgets和fputs实现,拷贝一个文件,例如将1.c的内容拷贝给2.c
#includeint main(int argc, const char *argv[]) { FILE* fp1=fopen("./test3.1.txt","r"); if(NULL==fp1){ perror("fp1"); return -1; } FILE* fp2=fopen("./test3.2.txt","w"); if(NULL==fp2){ perror("fp2"); return -1; } char arr[1000]; while(fgets(arr,sizeof(arr),fp1)!=NULL){ fputs(arr,fp2); } return 0; }
代码结果检验:
运行后,设定的test3.1.txt和test3.2.txt文件大小一致。
4.用fgets计算一个文件的大小,要求封装成函数
#includeint count(FILE* fp){ char arr[2]; int count=0; while(fgets(arr,sizeof(arr),fp)!=NULL){ count++; } return count; } int main(int argc, const char *argv[]) { FILE* fp=fopen("./txt.txt","r"); if(fp==NULL){ perror("fopen"); return -1; } int num=count(fp); printf("该文件大小为%d字节n",num); return 0; }
代码检验:(所调用的文件仍然是题1.2所使用的文件,所以空间大小一致)
5.用fgets计算一个文件有几行,要求封装成函数(linux操作系统以n结尾,就算是最后一行也有一个'n')
#includeint count(FILE* fp){ char arr[2]; int count=0; while(fgets(arr,sizeof(arr),fp)!=NULL){ if(arr[0]=='n'){ count++; } } return count; } int main(int argc, const char *argv[]) { FILE* fp=fopen("./txt.txt","r"); if(fp==NULL){ perror("fopen"); return -1; } int num=count(fp); printf("该文件有%d行n",num); return 0; }
代码检验:(所调用的文件仍然是题1.2所使用的文件,所以行数一致)



