求大佬帮忙看看我的程序算法出了什么问题
题目是编写一个打开两个文件的程序,让程序打印第一个文件的第一行、第二个文件的第一行、第一个文件的第二行、第二个文件的第二行,依此类推,直到打印完行数较多的文件的最后一行。这是我编写的程序:
程序代码:
#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循环里,但是程序输出却是打印第二个文件的第一行,然后全部打印了第一个文件的每一行和一个空行,再全部打印第二个文件。
这是照答案修改的代码