gpt4 book ai didi

c - 这个字符计数程序包含换行符吗?

转载 作者:行者123 更新时间:2023-11-30 15:27:18 26 4
gpt4 key购买 nike

#include <stdio.h>

/* count characters in input; 2nd version */
main()
{
double nc;

for (nc = 0; getchar() != EOF; ++nc)
;

printf("%.0f\n", nc);
}

当我编译并运行程序并输入一个字符(例如:abcd)时,按回车键,然后按转义字符 CTRL+Z,它显示 5。这是因为“隐藏”换行符还是因为它算EOF命令吗?因为当我单独输入 EOF 命令时,它保持为 0。

最佳答案

是的。

getchar 等待您输入“某事”; Enter 是“某物”(即,它具有定义的字符值;其他键,例如 Shift 可能没有)。

出于同样的原因,组合键 Ctrl+Z 也将是“某物”——大多数系统上的值 26 -- 但您使用的标准输入/输出库将此特定代码视为特殊命令:EOF。在我的操作系统 Mac OSX 上,这将是 Ctrl+D (出于我不知道的原因,除了“历史上,Ctrl+D 用于在 Unix 上发出 EOF 信号之外”)就像系统一样”)。

“换行符”绝不是“隐藏”或“不可见”,它只是另一个数字,如果您指示它这样做,它就会被读取并存储到变量或字符串中。您看不到它的原因是 putchar 和其他文本打印函数执行“显示关联字符”之外的其他操作:它将光标移动到下一行。这也是标准功能的一部分,也是一件好事。毕竟您不想按 空格 来“移至下一行”。 (事实上​​,这是此代码的一个常见功能,大多数字体甚至懒得为它提供可显示的项目。)

另请参阅What does getchar() exactly do?了解更多背景信息。

关于c - 这个字符计数程序包含换行符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27073026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com