当我输入文本流时,c=getchar 如何使用缓冲区输出文本流?
How c=getchar is using buffer to out textstream when I input text stream?
我理解这个程序如何显示 getchar 如何使用缓冲区复制和粘贴多个字符
#include <stdio.h>
main()
{
int c;
c=getchar();
putchar(c);
c=getchar();
putchar(c);
}
但是下面的这段代码如何
#include <stdio.h>
main()
{
int c;
c=getchar();
while (c!= EOF) // how does this program copy 12 and output 12. is a
{ buffer being used? How so?
putchar(c);
c=getchar();
}
}
显示正在使用的缓冲区...我不明白,我不明白当我输入 12 时它如何能够打印 12。我是 C 的新手
getchar
从标准输入流 (stdin
) 逐个字符地读取。问题是,在您按下 Enter 之前,终端不会将键入的数据刷新到 stdin
中。当你按下它时,字符被发送到 stdin
,getchar
读取每个字符并 putchar
输出每个字符,直到 EOF
.
is a buffer being used?
没有....但是.
是的,有一个缓冲区,隐藏在输入流中。准确地说是 "line" 缓冲区:字符被存储在流中,直到输入 newline,然后发送到进程(此时无论您使用什么阻塞读取函数使用 -- getchar()
、fgets()
,甚至 read()
-- returns).
在调用getchar()
的循环中,该函数将不断从流中返回字符,直到返回换行字符,此时该函数将再次阻塞直到信息流中还有一个 newline。
我理解这个程序如何显示 getchar 如何使用缓冲区复制和粘贴多个字符
#include <stdio.h>
main()
{
int c;
c=getchar();
putchar(c);
c=getchar();
putchar(c);
}
但是下面的这段代码如何
#include <stdio.h>
main()
{
int c;
c=getchar();
while (c!= EOF) // how does this program copy 12 and output 12. is a
{ buffer being used? How so?
putchar(c);
c=getchar();
}
}
显示正在使用的缓冲区...我不明白,我不明白当我输入 12 时它如何能够打印 12。我是 C 的新手
getchar
从标准输入流 (stdin
) 逐个字符地读取。问题是,在您按下 Enter 之前,终端不会将键入的数据刷新到 stdin
中。当你按下它时,字符被发送到 stdin
,getchar
读取每个字符并 putchar
输出每个字符,直到 EOF
.
is a buffer being used?
没有....但是
是的,有一个缓冲区,隐藏在输入流中。准确地说是 "line" 缓冲区:字符被存储在流中,直到输入 newline,然后发送到进程(此时无论您使用什么阻塞读取函数使用 -- getchar()
、fgets()
,甚至 read()
-- returns).
在调用getchar()
的循环中,该函数将不断从流中返回字符,直到返回换行字符,此时该函数将再次阻塞直到信息流中还有一个 newline。