C语言文件知识——合并文件(源码可运行)

    技术2022-07-11  137

    需求: 实现文本文件合并程序,在命令行界面输入多个文件名,然后把后面的所有文件合并到第一个文件的程序

    以下做的是四个文件的拷贝,如果有更多文件可以用一下copyFile()函数copy

    #include <stdio.h> #include <stdlib.h> #include <string.h> void copyFile(FILE *p1,FILE *p2) { fseek(p1,0L,SEEK_END); char ch=fgetc(p2); while(ch!=EOF) { fprintf(p1,"%c",ch); ch=fgetc(p2); } } int main() { //借鉴文件copy //利用while将后面的文件拼接到a.txt后 FILE *fp1,*fp2,*fp3,*fp4; char fileName1[20],fileName2[20],fileName3[20],fileName4[20]; printf("请输入要合并的文件名:\n"); scanf("%s",fileName1); scanf("%s",fileName2); scanf("%s",fileName3); scanf("%s",fileName4); printf("您好,以上所有的文件将被合并到%s中",fileName1); fp1=fopen(fileName1,"rt+"); fp2=fopen(fileName2,"r"); fp3=fopen(fileName3,"r"); fp4=fopen(fileName4,"r"); if((fp1= =NULL)||(fp2= =NULL)||(fp3= =NULL)||(fp4==NULL)) { printf("can not open files correctly\n"); return 0; } else { copyFile(fp1,fp2); copyFile(fp1,fp3); copyFile(fp1,fp4); } return 0; }

    运行界面: 编写过程遇到的问题: 1.命令行界面:黑底白字的窗口 2.用函数真的比一个一个写方便,要有函数封装的意识 3.NULL/EOF都是在stdio.h中的,若拼写错误(如Null)提示: Eorror:‘Null’was not declared in this scope 4.Eorror:Id returned 1 exit status,因为运行窗口未关闭就又开了一个 5.fseek函数相当于一个文件中指针的定位函数 6.刚开始时做的fseek发现a中的数据总是被覆盖而不显示,但是b、c、d中的数据都可以成功依次拼接。这就是说是a这个文件的问题,找了找发现打开方式是只“w”,改成可读可写“rt+”就可了

    后记: 讲真,这正好入学一年了,包括上学期的C和这学期的数据结构,这是我第一次完全自己写的作业,之前几乎都是copy copy再copy。 不知道在瞎忙什么,总是想吸收更多的知识而脱离了实践,所以知识也忘得快。 作业要认真做,做的过程中会收获很多,很多新旧知识都是在实际编写代码时候巩固甚至重新学习的。 做出来收获感真挺强的,即使是一个不难的小程序,一段不长的小代码

    Processed: 0.019, SQL: 9