C语言 fgets()和getc()读取文件流的区别
源于C Primer Plus上的一道习题:分别打印两个文件的同一行。
答案写的是:
ch1 = getc(f1);
ch2 = getc(f2);
while (ch1 != EOF || ch2 != EOF)
{
while (ch1 != EOF && ch1 != '\n') /* skipped after EOF reached */
{
putchar(ch1);
ch1 = getc(f1);
}
if (ch1 != EOF)
{
putchar('\n');
ch1 = getc(f1);
}
while (ch2 != EOF && ch2 != '\n') /* skipped after EOF reached */
{
putchar(ch2);
ch2 = getc(f2);
}
if (ch2 != EOF)
{
putchar('\n');
ch2 = getc(f2);
}
}
我写的代码是:
while(fgets(first, MAX, fp1) || fgets(second, MAX, fp2))
{
fputs(first, stdout);
fputs(second, stdout);
}
PS first和second是字符数组
我能理解逐字符,但是我用fgets()哪里错了?并且我只读取一个文件结果是正确的,读取两个就会出现乱码。这是怎么回事啊?