是否所有输入函数都使用相同的缓冲区?我在一本书中读到它说所有输入函数在程序中使用相同的缓冲区。但是我做了一个测试,它表明它可能是错误的。我想知道我的测试有什么问题吗?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
FILE *fp1;
FILE *fp2;
char ch;
char ch2;
int d;
scanf("%d", &d);
fp1 = fopen("file1.c","r");
fp2 = fopen("file2.c", "r");
while((ch = getc(fp1)) != 'r')
putchar(ch);
putchar('\n');
putchar(ch = getc(fp1));
putchar('\n');
while((ch2 = getc(fp2)) != 'n')
putchar(ch2);
putchar('\n');
putchar(getc(fp1));
putchar('\n');
putchar(ch2 = getc(fp2));
putchar('\n');
putchar(getchar());
putchar('\n');
return 0;
}
file1.c 的内容是:第一个
file2.c 的内容是:第二个
当我输入时:12cd
输出是:
the fi
s
the seco
t
d
c
似乎 file1.c file2.c 和 stdin 使用了三个不同的缓冲区,你能告诉我我的测试有什么问题吗?任何帮助将不胜感激。