我正在阅读“C 编程语言”(第 2 版),但我不明白一个概念。
有这段代码可以将输入复制到输出
#include <stdio.h>
main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}
在一开始的时候,c
被声明为int
类型变量,但如果我写类似“测试行”的内容,输出就是预期的“测试行”。我的问题是:怎么样c
宣布为int
类型变量但程序存储的空间足以存储很多字符?在计算机“内部”,它注册为字符数组?这个过程是如何进行的?
但如果我写类似“测试线”的内容,输出就是预期的“测试线”。
如何将“c”声明为int
输入 variabel 但程序存储的空间足以容纳很多字符?
所有输入都不存储在变量中c
同时,但在输入和输出缓冲区中。多变的c
一次处理一个字符。
让我们回顾一下事件的发生顺序。
-
main()
启动并运行到getchar()
.
-
getchar()
等待输入。
-
用户类型t
,操作系统缓冲该字符。
-
用户类型e
s
...., e
操作系统缓冲这些字符。
-
User types Enter, the OS buffers the character '\n'
and gives the buffer to stdin
for getchar()
to start using.
-
getchar()
回报t
并保存在c
.
-
代码继续putchar(c);
并把t
in the stdout
buffer.
-
代码继续getchar();
, 返回缓冲的e
并保存在c
.
-
代码继续putchar(c);
并把e
in the stdout
buffer.
-
8 - 9 重复st line
.
-
代码继续getchar();
, 返回缓冲的\n
并保存在c
.
-
代码继续putchar(c);
并把\n
in the stdout
缓冲。缓冲区现在被刷新到操作系统输出终端。输出现在可见。
-
返回步骤 2,直到没有可用的输入。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)