C语言编程实现链接两个文本文件的问题

��编一段程序,将文本文件1的内容链接到文本文件2的末尾,写了一个函数,为什么最后运行时文本文件2却成了和文本文件1一个样子,变成文件复制的功能了?

函数主要部分如下:

void fconnect()
{
FILE *fp1, *fp2;
char filename1[20], filename2[20], ch;
printf("Input the file name you want to copy:\n");
scanf("%s", filename1);
if ((fp1 = fopen (filename1, "r")) == NULL)
{
printf("File 1 doesn't exist!");
exit(0);
}
printf("Input the file name you want to store:\n");
scanf("%s", filename2);
if ((fp2 = fopen (filename2, "w")) == NULL)
{
printf("File 2 doesn't exist!");
exit(0);
}
fseek (fp2, 0L, 2);
while (!feof(fp1))
fputc (fgetc (fp1), fp2);
fclose (fp1);
fclose (fp2);
}

��程序本意是将fp1指向的文件内容链接到fp2所指的文件中,首先通过fseek (fp2, 0L, 2)让指针指向fp2文件内容的末尾,然后再通过循环逐个从fp1中复制字符进fp2,理论上是接着fp2文件末尾复制的,但是最后fp2的文件内容却变成了和fp1完全相同,可以推断复制是从fp2文件头开始执行的,明明我已经让fp2指针指向文件尾了,但是为什么还是会这样?到底该怎么改才能实现?不要通过第三个文件来处理,只用这两个文件该怎么做?
不要从网上复制答案来,我说了只要用这两个文件,不要借助第三个文件,直接将fp1接入fp2后面

以a+方式打开文件2。如果文件2不存在,则创建一个文件,如果文件2存在,则文件1的数据追加到文件2的后面,于是就可以实现你说的了。你试试?只有亲手试过才会记忆深刻。
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-09
#include <stdio.h>
#include <process.h>
void main()
{
char ch;
FILE *fp1,*fp2,*fp3;
if((fp1=fopen("C:\\Documents and Settings\\Administrator\\桌面\\1.txt","r"))==NULL)
{printf("打开文件1.txt失败!\n");
exit(1);
}
else
printf("打开文件1.txt成功!\n");
if((fp2=fopen("C:\\Documents and Settings\\Administrator\\桌面\\2.txt","r"))==NULL)
{printf("打开文件2.txt失败!\n");
exit(3);
}
else
printf("打开文件2.txt成功!\n");
if((fp3=fopen("C:\\Documents and Settings\\Administrator\\桌面\\3.txt","a"))==NULL)
{printf("打开文件3.txt失败!\n");
exit(3);
}
else
printf("打开文件3.txt成功!\n");
while((ch=fgetc(fp1))!=EOF)
fputc(ch,fp3);
while((ch=fgetc(fp2))!=EOF)
fputc(ch,fp3);
fclose(fp1);
fclose(fp2);
fclose(fp3);
}

C语言编程实现链接两个文本文件的问题
以a+方式打开文件2。如果文件2不存在,则创建一个文件,如果文件2存在,则文件1的数据追加到文件2的后面,于是就可以实现你说的了。你试试?只有亲手试过才会记忆深刻。

怎样用c语言编程将两字符串连接
1. 用 strcat 函数连接两个字符串。2.以下是相关字符串处理 a=' a';b='b b';c='cccc';m='' % 获取字符串长度 length(a) % 连接两个字符串,每个字符串最右边的空格被裁切 d=strcat(a,c) length(d) % 连接多行字符串,每行长度可不等,自动把非最长字符串最右边补空格 % ...

用C语言编程:编写一个函数,将两个字符串连接起来
1、新建一个工程和.c文件,输入头文件和主函数。2、定义变量类型。3、调用cpy函数。4、定义一个函数,并定义变量类型。5、用一个For 语句和if语句判断是否为元音。6、最后加一个字符串结束符,并在主函数中输出。7、编译。运行。

c语言编程将两个字符串连接起来
\/\/ void fun(char p1[], char p2[]) 的最后一行p2[j]='\\0';\/\/ 改为:p1[n]='\\0';include <stdio.h>void fun(char p1[], char p2[]){int i=0,j=0,n=0;while(p1[i]!=0){i++;n++;}while(p2[j]!=0){p1[n]=p2[j];n++;j++;}p1[n]='\\0';}main(){char s1...

c语言编程怎么实现字符串连接?
在C语言中,进行字符串连接主要通过使用字符数组和指针实现。strcat函数便是完成这一操作的利器,能够将两个字符串连接在一起。strcat函数的声明为:char *strcat(char *dest, const char *src);这里dest代表目标字符数组,src代表源字符数组。函数执行后,将src中的内容追加到dest的末尾。下面是一个示例...

c语言编程 要用指针把两个字符串连接起来, 我这么编的不知道哪错了...
语法有错误,可以按照如下方法实现用指针把两个字符串连接起来:1、第一步,创建一个新项目和.c文件,见下图,转到下面的步骤。2、第二步,执行完上面的操作之后,定义变量类型,见下图的代码,转到下面的步骤。3、第三步,执行完上面的操作之后,调用cpy函数,见下图的代码,转到下面的步骤。4、第四...

用C语言编程:编写一个函数,将两个字符串连接起来
一:char* catStr(char str1[],char str2[]){ strcat(str1,str2);return str1;} 二:char* catStr(char str1[],char str2[]){ int i=0;int lenstr1=0;lenstr=strlen(str1)for(i;i<=strlen(str);i++){ str1[lenstr++]=str2[1];} return str1;} ...

用C语言写一个函数,将两个字符串连接。
1、实际上就是实现strcat这个字符串库函数,在vc自带的crt源码或者linux平台的glibc库中都有strcat的源码,自己可以查阅参考,看看库开发者是如何写代码的,对于学习C语言非常有用。2、示例 include <stdio.h> char *strcat(char *str1, char *str2){ if((str1==NULL)||(str2==NULL)) throw "...

用C语言:写一个函数,将两个字符串连接
字符串连接:即将字符串b复制到另一个字符a的末尾,并且字符串a需要有足够的空间容纳字符串a和字符串b。include<stdio.h>void mystrcat(char a[],char b[]){\/\/把a和b拼接起来 int i=0,j=0;while(a[i++]!='\\0'); i--;while(b[j]!='\\0'){ a[i++]=b[j++];} a[i]='\\0...

c语言两个txt文件读取数据处理,请求编程,五块钱红包直接发微信_百度知 ...
include <stdio.h>int main(void){ FILE *fpb,*fpc; char *temp[2400]; int b[600]; int n; if(fpb=fopen("b.txt","r")&&fpc=fopen("c.txt","w+")) { fgets(temp,2400,fpb); n=strlen(temp)\/4; for(int i=0;i<n;i++) ...

相似回答
大家正在搜