gpt4 book ai didi

计数线 "The C Programming Language"K&R

转载 作者:行者123 更新时间:2023-12-04 09:36:28 29 4
gpt4 key购买 nike

我计算输入行数的代码似乎可以工作。在这里:

#include <stdio.h>

int main()
{
int counter = 0;

while(getchar() != EOF)
{
if(getchar() == '\n')
{
counter += 1;
}
}

printf("Counter: %d", counter);

return 0;
}

但我的问题是,为什么在 K&R 的书中,当 getchar 返回值仅在 while 循环条件下被测试为真或假时,他们将 getchar 返回值存储在变量中?我认为没有理由这样做。

K&R 的版本:

#include <stdio.h> 

main()
{

int c, nl;
nl = 0;
while ((c = getchar()) != EOF)
if (c == '\n') ++nl;

printf("%d\n", nl);
}

注意“int c”正在存储 getchar 的返回值。

最佳答案

例如,如果第一个 getchar() 读取换行符并且条件 '\n !=EOF 变为真,进入循环

 while(getchar() != EOF)   

{
if(getchar() == '\n') // here reads next character that is not newline
{
counter += 1; // missed counting newline , which read by first `getchar()`
}
}

如您所见,上面的一个将无法正常工作。

关于计数线 "The C Programming Language"K&R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19388389/

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