① C语言实现多个文本合并
#include "stdio.h" #include "stdlib.h" #include "string.h" long filesize(FILE *stream); /* 求文件的长度 */ int main() { int i; char inf1,inf2,outf; /* 用户输入的文件路径 */ FILE *in1, *in2, *out; /*in1,in2为待合并的文件,out为合并后的文件 */ unsigned long in1fileLength,in2fileLength; char *buf1, *buf2; printf("————————————————\n"); printf("> Please input parameter:\n"); printf("> test <InputFileName1><InputFileName2> <OutputFileName>:\n"); printf("————————————————\n"); printf("These are the command-line arguments passed to" " main:\n\n"); scanf("%s",inf1); /* 用户输入待合并的文件1 */ if ((in1 = fopen(inf1, "rb")) == NULL) { printf("Cannot open input file1.\n"); exit(1); } else printf("file1 is opened,please input the file2\n"); scanf("%s",inf2); /* 待合并文件2 */ if ((in2 = fopen(inf2, "rb")) == NULL) { printf("Cannot open input file2.\n"); exit(1); } else printf("file2 is opened,please input the loctation after united\n"); scanf("%s",outf); /* 经过合并操作后存放的路径 */ if ((out = fopen(outf, "wb"))== NULL) { printf("Cannot open output file.\n"); exit(1); } in1fileLength = filesize(in1); /* 文件1的长度 */ in2fileLength = filesize(in2); /* 文件2的长度 */ buf1 = (char *)malloc(in1fileLength); /* 读出放入缓冲区中 */ buf2 = (char *)malloc(in2fileLength); fread(buf1,in1fileLength, 1, in1); fread(buf2,in2fileLength, 1, in2); fwrite(buf1, in1fileLength, 1, out); /* 写入out文件中 */ fwrite(buf2, in2fileLength, 1, out); printf("unit is successful!,and the loctation is %s",outf); fclose(in1); /* 关闭文件 */ fclose(in2); fclose(out); return 1; } long filesize(FILE *stream) /* 求文件长度的函数 */ { long curpos1, curpos2,length; fopen(stream,"rb"); curpos1= ftell(stream); fseek(stream, 0L, SEEK_END); curpos2= ftell(stream); length=curpos2-curpos1; fseek(stream, curpos1, SEEK_SET); return length; fclose(stream); }
② 用c语言编写程序实现将两个有序的文件进行合并,同时将生成的新文件输出到屏幕上,
#include"stdafx.h"#include<string.h>#include<stdio.h>#include<stdlib.h>structSTUDENT{intNumber;charName[32];intClass;floatScore;};#defineIS_WHITE(ch)((unsignedchar)ch<=15||ch=='')//trim函数去除字符串str前后的空白字符char*trim(char*str){charch;char*p,*q,*r;p=str;q=str;r=str-1;while(1){ch=*p;if(!IS_WHITE(ch))break;if(ch==0)break;p++;}while(1){ch=*p++;*q=ch;if(ch==0)break;if(!IS_WHITE(ch))r=q;q++;}*++r=0;returnstr;}intInputStudent(constchar*filename){FILE*f;intn;charstr[200];structSTUDENTstudent;f=fopen(filename,"wb");if(f==NULL)return0;//返回0表示失败for(n=0;;++n){printf("请输入学号:");scanf("%d",&student.Number);if(student.Number==0)break;while(1){printf("请输入姓名:");gets(str);trim(str);if(str[0]==0)continue;//确保姓名不为空strncpy(student.Name,str,sizeof(student.Name)-1);//上句确保输入姓名长度不超过31字节break;}printf("请输入班级:
");scanf("%d",&student.Class);printf("请输入成绩:
");scanf("%f",&student.Score);fwrite(&student,sizeof(student),1,f);//printf("%08d%-32s%-3d%f
",//student.Number,//student.Name,//student.Class,//student.Score);}fclose(f);returnn;//返回有多少个学生信息录入}voidSortStudent(structSTUDENT*student,intn){inti,j;structSTUDENT*a,*b,t;for(j=0;j<n-1;++j){a=student+j;for(i=j+1;i<n;++i){b=student+i;if(a->Number<=b->Number)continue;//否则交换memcpy(&t,a,sizeof(structSTUDENT));memcpy(a,b,sizeof(structSTUDENT));memcpy(b,&t,sizeof(structSTUDENT));}}}voidPrintStudent(conststructSTUDENT*student,intn){inti;for(i=0;i<n;++i,++student)printf("%08d%-32s%-3d%6.1f
",student->Number,student->Name,student->Class,student->Score);}voidmain(){intn1,n2,n;structSTUDENT*student;constcharfn1[]="d:\student1.bin";//文件1constcharfn2[]="d:\student2.bin";//文件2constcharfn[]="d:\student.bin";//合并后的文件FILE*f;printf("学生信息录入(录入过程中,学号输入为0,则退出录入)
");printf("第一步:%s中的学生信息录入:
",fn1);n1=InputStudent(fn1);if(0==n1){printf("%s中的学生信息录入有误,退出程序
",fn1);return;}printf("第二步:%s中的学生信息录入:
",fn2);n2=InputStudent(fn2);if(0==n2){printf("%s中的学生信息录入有误,退出程序
",fn2);return;}printf("第三步:合并%s,%s
",fn1,fn2);student=(structSTUDENT*)malloc((n1+n2)*sizeof(structSTUDENT));f=fopen(fn1,"rb");if(f==NULL){printf("%s打开失败,退出程序
",fn1);return;}n=fread(student,sizeof(structSTUDENT),n1,f);fclose(f);if(n!=n1){printf("%s读入错误,退出程序
",fn1);return;}f=fopen(fn2,"rb");if(f==NULL){printf("%s打开失败,退出程序
",fn2);return;}n=fread(student+n1,sizeof(structSTUDENT),n2,f);//PrintStudent(student,n1+n2);//输出学生信息fclose(f);if(n!=n2){printf("%s读入错误,退出程序
",fn2);return;}n=n1+n2;SortStudent(student,n);f=fopen(fn,"wb");if(f==NULL){printf("%s建立失败,退出程序
",fn);return;}fwrite(student,sizeof(structSTUDENT),n,f);fclose(f);PrintStudent(student,n);//输出学生信息free(student);}
③ C语言 将多个文本文件合成到一个文件中
你只能全用 unicode.ANSI转Unicode,空白以后的码,前面加一个0x00,组成两字节码。 空白以前的码,要查一下编码。(我只记得回车是0x2029; 新行是0x2028;其它码你转空白0x0020也可以)。注意notepad写成的Unicode文件开始处有不可见特别码,所以输出文件头要先写这个特别码。特别码的值与unicode 大端码或小端码有关。小端码0xfffe, 大端码 0xfeff。Unicode文件要用 二进制文件 打开 读写。
④ C语言 文件合并
#include "stdlib.h"#include "stdio.h"void main(void){FILE *fA,*fB,*fC;char buf[256];long l1,l2;fA=fopen("A.txt","rb");fB=fopen("B.txt","rb");fC=fopen("C.txt","wb");fseek(fA,0,2);l1=ftell(fA);fseek(fA,0,0);fseek(fB,0,2);l2=ftell(fB);fseek(fB,0,0);fread(buf,l1,1,fA);fread(&buf[l1],l2,1,fB);fwrite(buf,l1+l2,1,fC);fclose(fA);fclose(fB);fclose(fC);}
⑤ c语言编程,关于文件合并,急!
时间来不及了,根据每个文件 每行结束标志获取完整一行,两个文件都这么做,然后写入新的文件中,要的基本语言提示就是根据你获取的每行某些关键字匹配了,如果出现该字段你需要干嘛等等,你提的需求不明确,写起来也不知道什么是标准的!!!!
⑥ C语言文件操作,如何将文件对应内容合并到另一个文件内
下面是c语言学生成绩合并并求平均成绩代码,用到链表,可以合并任意长文件,运行代码时注意2个输入文件放到程序运行目录。
合并求平均成绩c代码
⑦ C语言如何将多个.mp3文件合并到一个.bin文件里面呀求代码
最简单的就是用cmd下的命令行,比如 /b 1.mp3+2.mp3 3.mp3就可以将1和2合并成3,你直接生成这个字符串,执行就行了。
⑧ C语言文件怎样合并
#include <stdio.h>const int MAX_SIZE_PER_LINE = 1024;int main(int argc, char *argv[]){ FILE * file_a,*file_b,*file_c; char buffer[MAX_SIZE_PER_LINE*2]; file_a = fopen("a.txt","r"); file_b = fopen("b.txt","r"); file_c = fopen("c.txt","w"); while(NULL != fgets(buffer ,MAX_SIZE_PER_LINE,file_a)) { //不是最后一行肯定会有换行符,消除这个换行符 if('\n' == buffer[strlen(buffer)-1]) fgets(buffer+strlen(buffer)-1 ,MAX_SIZE_PER_LINE,file_b); //对于最后一行可能没有换行符的情况特殊处理 else fgets(buffer+strlen(buffer) ,MAX_SIZE_PER_LINE,file_b); fputs(buffer,file_c); } fclose(file_a); fclose(file_b); fclose(file_c); return 0;}/*A.txt : ——-aa*bb*cc*dd*ee*ff*gg*B.txt : ——-11223344556677C.txt :——-aa*11bb*22cc*33dd*44ee*55ff*66gg*77 说明: A.txt 和 B.txt 要放在可执行程序同一个目录下。C.txt 会自动在这个目录下生成。 */
⑨ C语言文件合并
文件的合并要使用到FILE类型,以及文件的打开关闭,下面以图片文件和其它类型的文件进行合并为例,说说文件的合并:#include<stdio.h>#include<stdlib.h>voidmain(){ FILE*fp,*ff,*ftt; charch; charfn1[20],fn2[20],ft[20]; printf(" 图片文件合成器
"); printf("输入要合成的图片名称:"); scanf("%s",fn1); printf("输入要合成的文件名称:"); scanf("%s",fn2); printf("生成的名称:"); scanf("%s",ft); if(!(fp=fopen(fn1,"rb")))//当不能打开图片文件的提示处理 { printf("不能打开图片%s
",fn1); return; } if(!(ff=fopen(fn2,"rb"))) { printf("不能打开文件%s",fn2); return; } if(!(ftt=fopen(ft,"wb"))) { printf("不能打开%s",ft); return; } while(!(feof(fp)))//写入图片文件 { ch=fgetc(fp); fputc(ch,ftt); } fclose(fp); while(!(feof(ff)))//写入其它类型的文件 { ch=fgetc(ff); fputc(ch,ftt); } fclose(ff); fclose(ftt); system("pause"); }
要注意了,这个例子涉及的文件均要在cpp文件的同一级目录,要是不在同一级目录则要输入文件的路径,合成的文件也在cpp文件的目录下。
⑩ C语言2个文件合并为3个
将两个文件内容合并,文件操作:
#include<stdio.h>#include<stdlib.h>intmain(intargc,char*argv[]){FILE*fp1,*fp2,*fp3;intch;fp1=fopen("data1","r");fp2=fopen("data2","r");fp3=fopen("data3","w");if(fp1==NULL||fp2==NULL||fp3==NULL){printf("openwrong!
");exit(0);}ch=fgetc(fp1);while(!feof(fp1)){fputc(ch,fp3);ch=fgetc(fp1);}fclose(fp1);printf("data1successful
");ch=fgetc(fp2);while(!feof(fp2)){fputc(ch,fp3);ch=fgetc(fp2);}fclose(fp2);printf("data2successful
");fclose(fp3);return0;}