c语言合并两个文件的函数,c语言将两个文件合并

用c语言编写程序实现将两个有序的文件进行合并,同时将生成的新文件输出到屏幕上,

#include "stdafx.h"

站在用户的角度思考问题,与客户深入沟通,找到陇川网站设计与陇川网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都网站设计、企业官网、英文网站、手机端网站、网站推广、域名申请、网页空间、企业邮箱。业务覆盖陇川地区。

#include string.h

#include stdio.h

#include stdlib.h

struct STUDENT{

int Number;

char Name[32];

int  Class;

float Score;

};

#define IS_WHITE(ch) ((unsigned char)ch=15 || ch==' ')

//trim函数去除字符串str前后的空白字符

char *trim(char *str)

{

char ch;

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;

return str;

}

int InputStudent(const char *filename)

{

FILE *f;

int n;

char str[200];

struct STUDENT student;

f=fopen(filename,"wb");

if (f==NULL) return 0;   //返回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("请输入班级:\n"); scanf("%d", student.Class);

printf("请输入成绩:\n"); scanf("%f", student.Score);

fwrite(student, sizeof(student),1, f);

//      printf("%08d %-32s %-3d %f\n",

//          student.Number,

//          student.Name,

//          student.Class,

//          student.Score);

}

fclose(f);

return n;   //返回有多少个学生信息录入

}

void SortStudent(struct STUDENT *student, int n)

{

int i,j;

struct STUDENT *a, *b, t;

for (j=0; jn-1; ++j)

{

a=student+j;

for (i=j+1; in; ++i)

{

b=student+i;

if (a-Number=b-Number) continue; //否则交换

memcpy(t,a,sizeof(struct STUDENT));

memcpy(a,b,sizeof(struct STUDENT));

memcpy(b,t,sizeof(struct STUDENT));

}

}

}

void PrintStudent(const struct STUDENT *student, int n)

{

int i;

for (i=0; in; ++i, ++student)

printf("%08d %-32s %-3d %6.1f\n",

student-Number,

student-Name,

student-Class,

student-Score);

}

void main()

{

int n1, n2, n;

struct STUDENT *student;

const char fn1[]="d:\\student1.bin"; //文件1

const char fn2[]="d:\\student2.bin"; //文件2

const char fn[]="d:\\student.bin";   //合并后的文件

FILE *f;

printf("学生信息录入(录入过程中,学号输入为0,则退出录入)\n");

printf("第一步:%s中的学生信息录入:\n", fn1);

n1=InputStudent(fn1);

if (0==n1)

{

printf("%s中的学生信息录入有误,退出程序\n",fn1);

return;

}

printf("第二步:%s中的学生信息录入:\n", fn2);

n2=InputStudent(fn2);

if (0==n2)

{

printf("%s中的学生信息录入有误,退出程序\n",fn2);

return;

}

printf("第三步:合并%s, %s\n",fn1,fn2);

student=(struct STUDENT *)malloc((n1+n2)*sizeof(struct STUDENT));

f=fopen(fn1,"rb");

if (f==NULL) {printf("%s打开失败,退出程序\n",fn1); return;}

n=fread(student,sizeof(struct STUDENT), n1, f);

fclose(f);

if (n!=n1) {printf("%s读入错误,退出程序\n",fn1); return;}

f=fopen(fn2,"rb");

if (f==NULL) {printf("%s打开失败,退出程序\n",fn2); return;}

n=fread(student+n1,sizeof(struct STUDENT), n2, f);

//  PrintStudent(student,n1+n2);  //输出学生信息

fclose(f);

if (n!=n2) {printf("%s读入错误,退出程序\n",fn2); return;}

n=n1+n2;

SortStudent(student,n);

f=fopen(fn,"wb");

if (f==NULL) {printf("%s建立失败,退出程序\n",fn); return;}

fwrite(student, sizeof(struct STUDENT), n, f);

fclose(f);

PrintStudent(student,n);  //输出学生信息

free(student);

}

怎么把两个不同程序合到一起?(c语言)

你问的问题好大,要合并两份独立的c语言代码,

第一,要把两份代码里的main入口合并为一个,

如何合并要看你期望合并后的main函数实现什么样的功能,

例如,A程序是实现计算一个数组里的所有数相加后的和的值的功能;

B程序是实现输出任意数字到一个txt文件的功能。那么合并A和B程序后,

一般就是将B程序里的main函数里的实现内容追加到A程序里的main函数的实现内容之后,

就算是合并后的main函数的内容了。

希望你具体问题具体分析。

第二,合并过程中要确认两份代码有没有标识符命名上的重复的问题。

例如两份代码里的公开函数名有没有相同的,如果相同的话肯定要改成不同的。

第三,在确认了前两点后,接着确认编译链接不出错。

第四,链接成功后,确认运行动作是否符合期望。

当然,实际项目中合并两份代码,往往不是上面这样做了就可以了。还涉及到两个程序中的功能的合并之类的比较复杂的工作。实践出真知,希望你多做项目来收获心得。

c语言合并两个文件

完整代码如下,有任何疑问可以追问。

#include stdio.h

#include stdlib.h

int merge(char *in1,char *in2,char *out)

{

FILE *f_in,*f_out;

int n;

char buf[4096];

//打开输出文件

f_out=fopen(out,"wb");

if(!f_out) return 0;

//打开并读第一个文件写到输出文件

f_in=fopen(in1,"rb");

if(!f_in) return 0;

while(n=fread(buf,1,sizeof(buf),f_in))

{

fwrite(buf,1,n,f_out);

}

fclose(f_in);

//打开并读第二个文件写到输出文件

f_in=fopen(in2,"rb");

if(!f_in) return 0;

while(n=fread(buf,1,sizeof(buf),f_in))

{

fwrite(buf,1,n,f_out);

}

fclose(f_in);

fclose(f_out);

return 1;

}

int main()

{

if (!merge (“1.txt”, “2.txt”, “3.txt”))

printf(“Failed”);

else

printf(“successfully”);

return 0;

}

C语言编写程序实现两个文件的合并功能,急

描述的不清楚,是不是将两个函数的代码合并?

如果是的话合并函数a,b的方法就是新建一个函数c

函数类型

c(参数列表)

{

a();

b();

}

然后运行c,如果不是的话,希望能描述的清楚一点

C语言文件合并

设A.txt和B.txt都在当前目录下,读打开A.txt和B.txt,写打开C.txt。按字符循环读取A.txt文件一行并逐字符写入C.txt文件,但当读到'\n'时不写入\n'而启动另一内循环按字符读取B.txt文件的一行并逐字符写入C.txt文件,当写入'\n'后跳出内循环停止读取B.txt文件转而再去读A.txt文件的下一行……如此反复,直到遇到A.txt文件的EOF时结束。代码如下:

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

#include "stdlib.h"

int main(void){

FILE *fpa,*fpb,*fpc;

char ch;

fpa=fopen("A.txt","r");

fpb=fopen("B.txt","r");

fpc=fopen("C.txt","w");

if(!fpa || !fpb || !fpc){

printf("Open the file(s) failure...\n");

exit(0);

}

while((ch=fgetc(fpa))!=EOF){

if(ch=='\n')

while(fputc(ch=fgetc(fpb),fpc),ch!='\n'  ch!=EOF);

else fputc(ch,fpc);

}

fclose(fpc);

fclose(fpb);

fclose(fpa);

return 0;

}

我该如何用C语言合并两个csv文件?

定义一个成员结构体。

再定义此结构体的两个数组,数组大小是csv文件中存储的成员数。

使用fscanf函数读取A.csv的数据存入一个结构体数组中,读取B.csv的数据存入另一个结构体数组中。

循环遍历结构体数组,把一个数组的元素值赋值给另一个数组的元素。这样另一个结构体数组就有了两个csv文件中的数据。

使用fopen函数创建并打开C.csv文件。

把数据完整的另一个结构体数组的数据使用fprintf函数输出到C.csv文件中。


网页名称:c语言合并两个文件的函数,c语言将两个文件合并
文章出自:http://cdiso.cn/article/dsgisso.html

其他资讯