求大佬帮忙看看我的程序算法出了什么问题
题目是编写一个打开两个文件的程序,让程序打印第一个文件的第一行、第二个文件的第一行、第一个文件的第二行、第二个文件的第二行,依此类推,直到打印完行数较多的文件的最后一行。这是我编写的程序:
程序代码:#include <stdio.h>
#include <stdlib.h>
#define LEN 256
int main(void)
{
FILE *fp1, *fp2;
char name1[LEN], name2[LEN];
char ch1, ch2;
int i = 1;
puts("请输入第一个文件名:");
gets(name1);
if((fp1 = fopen(name1, "r")) == NULL)
{
fprintf(stderr, "不能打开文件%s\n", name1);
exit(EXIT_FAILURE);
}
puts("请输入第二个文件名:");
gets(name2);
if((fp2 = fopen(name2, "r")) == NULL)
{
fprintf(stderr, "不能打开文件%s\n", name2);
exit(EXIT_FAILURE);
}
while((ch1 = getc(fp1)) != EOF || (ch2 = getc(fp2)) != EOF)
{
printf("第%d行\n", i++);
while(ch1 != EOF && ch1 != '\n')
{
putchar(ch1);
ch1 = getc(fp1);
}
if(ch1 != EOF)
{
putchar('\n');
}
while(ch2 != EOF && ch2 != '\n')
{
putchar(ch2);
ch2 = getc(fp2);
}
if(ch2 != EOF)
{
putchar('\n');
}
}
if(fclose(fp1) != 0)
printf("不能关闭文件%s", name1);
if(fclose(fp2) != 0)
printf("不能关闭文件%s", name2);
return 0;
}
程序运行是这样的:
我把ch1=getc(fp1) 放到最外层的while循环里,但是程序输出却是打印第二个文件的第一行,然后全部打印了第一个文件的每一行和一个空行,再全部打印第二个文件。
这是照答案修改的代码







