急求:c语言文件处理问题!!!!

来源:百度知道 编辑:UC知道 时间:2024/06/08 10:48:26
小弟最近想用C实现文本文件连接程序,执行格式如下(cmd环境下):
FCAT file_name1 file_ name2(把第二个文件的内容加到第一个文件的后面)
代码:
#include<stdio.h>
void main(int num,char *str[])
{ FILE *fp1,*fp2;
char ch;
if(num<3)
printf("you need to input two files\n");
if((fp1=fopen("str[1]","r+"))==NULL)
printf("%s name error\n",str[1]);
if((fp2=fopen("str[2]","r"))==NULL)
printf("%s name error\n",str[2]);
fseek(fp1,0L,2);
ch=getc(fp2);
if(!feof(fp2))
{ putc(ch,fp1);
ch=getc(fp2);
}
fclose(fp1);
fclose(fp2);
}
当我在cmd中执行这个程序时,发现总是第二个文件没办法正常打开,感觉它总是在不断的变大!但,小弟思前想后,还是没能找出问题所在!
是不是其中的那个fseek(fp1,0L,2)不能是fp1指向文件末尾啊??但,好像平时都是这样指向的吧!!
请各位大虾帮帮忙吧,小弟先谢谢了!!小弟的分全在这了!!

这个程序有两点错误:

1。fopen中,str[1],str[2]前后的双引号多余。
2。!feof(fp2)前应该用while不能用if

修改后代码:
#include<stdio.h>
void main(int num,char *str[])
{
FILE *fp1,*fp2;
char ch;
if(num<3)
printf("you need to input two files\n");
if((fp1=fopen(str[1],"r+"))==NULL)
printf("%s name error\n",str[1]);
if((fp2=fopen(str[2],"r"))==NULL)
printf("%s name error\n",str[2]);
fseek(fp1,0L,2);
ch=getc(fp2);
while(!feof(fp2))
{
putc(ch,fp1);
ch=getc(fp2);
}
fclose(fp1);
fclose(fp2);
}

上述修改后的程序执行无误。