gpt4 book ai didi

C:为什么这段代码中 "Enter"键触发输出?

转载 作者:太空宇宙 更新时间:2023-11-04 03:26:54 25 4
gpt4 key购买 nike

这是我在“The C Programming Language”中练习 1-13 的代码:

#include <stdio.h>

int main()
{
int c, currentIndex, currentLength;

currentLength = currentIndex = 0;

while ((c = getchar()) != EOF){
if (c == '\t' || c == '\n' || c == ' '){
if (currentLength == 0){
continue;
}

printf("Length of word %d: ||", currentIndex);

for (int i = 0; i < currentLength; i++){
putchar('-');
}
putchar('\n');

currentLength = 0;
++currentIndex;
} else {
++currentLength;
}
}

return 0;
}

所以我可以编译它并使用 ./a.out 运行它,但是当我按“Enter”开始新的输入行('\n')时,它运行 printf() 和 putchar() 函数( ' ' 或 '\t' 都不会触发输出)。 while 循环没有结束(它应该以 END-OF-FILE(CTRL-D) 结束)但我想知道为什么这些函数在调用时被调用。它防止一次输入多行。这是它的输出示例:

    how long are these words
Length of word 0: ||---
Length of word 1: ||----
Length of word 2: ||---
Length of word 3: ||-----
Length of word 4: ||-----

需要说明的是,当我按下“Enter”时,我只会得到 printf() 和 putchar() 的输出。 CTRL-D 只是结束循环和程序。

最佳答案

getchar() 默认处于缓冲模式,因此在按下 enter 之前不会将字符提供给您的程序。这个问题的重复:How to avoid press enter with any getchar()

关于C:为什么这段代码中 "Enter"键触发输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40443987/

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