1、使用fgetc、fputc实现下面功能:
a.用fgetc和fputc实现,拷贝一个文件,例如将1.c的内容拷贝给2.c
b.用fgetc计算一个文件的大小,要求封装成函数
c.用fgetc计算一个文件有几行,要求封装成函数(linux操作系统以n结尾,就算是最后一行也有一个'n')
功能a:
#include#include int main(int argc, const char *argv[]) { FILE *fp1=fopen(argv[1],"r"); FILE *fp2=fopen(argv[2],"w"); if(NULL==fp1 || NULL==fp2){ perror("fopen"); return -1; } char ch; while((ch=fgetc(fp1))!=EOF){ fputc(ch,fp2); } puts("拷贝完成"); fclose(fp1); fclose(fp2); return 0; }
测试:
功能b和功能c:
#include#include #include //计算文件的大小(单位:字节) int file_size(const char *pathname) { int count=0; FILE *fp=fopen(pathname,"r"); if(NULL==fp){ perror("fopen"); printf("%s %dn",__func__,__LINE__); exit(-1); } while(fgetc(fp)!=EOF){ count++; } fclose(fp); return count; } //计算文件的行数 int file_lines(const char *pathname) { int lines=0; char ch; FILE *fp=fopen(pathname,"r"); if(NULL==fp){ perror("fopen"); printf("%s %dn",__func__,__LINE__); exit(-1); } while((ch=fgetc(fp))!=EOF){ if(ch=='n') lines++; } fclose(fp); return lines; } int main(int argc, const char *argv[]) { int count; printf("文件%s的大小为%d个字节n",argv[1],file_size(argv[1])); printf("文件%s有%d行n",argv[1],file_lines(argv[1])); return 0; }
测试:
2、使用fgets、fputs实现下面功能:
a.用fgets和fputs实现,拷贝一个文件,例如将1.c的内容拷贝给2.c
b.用fgets计算一个文件的大小,要求封装成函数
c.用fgets计算一个文件有几行,要求封装成函数(linux操作系统以n结尾,就算是最后一行也有一个'n')
功能a:
#include#include int main(int argc, const char *argv[]) { //实现拷贝功能 FILE *fp1=fopen(argv[1],"r"); FILE *fp2=fopen(argv[2],"w"); if(NULL==fp1 || NULL==fp2){ perror("fopen"); return -1; } char str[32]; while(fgets(str,sizeof(str),fp1)!=NULL){ fputs(str,fp2); } fputs("拷贝完成n",stdout); fclose(fp1); fclose(fp2); return 0; }
测试:
功能b和功能c:
#include#include #include #include //统计文件的大小(单位:字节) int file_size(const char *pathname) { int count=0; char str[32]; FILE *fp=fopen(pathname,"r"); if(NULL==fp){ perror("fopen"); printf("%s %dn",__func__,__LINE__); exit(-1); } while(fgets(str,sizeof(str),fp)!=NULL){ count+=strlen(str); } fclose(fp); return count; } //统计文件的行数 int file_lines(const char *pathname) { int lines=0; char str[32]; FILE *fp=fopen(pathname,"r"); if(NULL==fp){ perror("fopen"); printf("%s %dn",__func__,__LINE__); exit(-1); } while((fgets(str,sizeof(str),fp))!=NULL){ if(str[strlen(str)-1]=='n') lines++; } fclose(fp); return lines; } int main(int argc, const char *argv[]) { int count; printf("文件%s的大小为%d个字节n",argv[1],file_size(argv[1])); printf("文件%s有%d行n",argv[1],file_lines(argv[1])); return 0; }
测试:



