C语言编程实现链接两个文本文件的问题
��编一段程序,将文本文件1的内容链接到文本文件2的末尾,写了一个函数,为什么最后运行时文本文件2却成了和文本文件1一个样子,变成文件复制的功...
��编一段程序,将文本文件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后面 展开
函数主要部分如下:
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后面 展开
2个回答
展开全部
#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);
}
#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);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询