我正在阅读 K&R 关于 C 的书,我读到了这一部分,其中输出将是您输入的换行符数量。我想让它打印出与键入的换行符数量相对应的每个数字:正在读取行。这只在按下 F6 或 CTRL+Z 后输出 nl 的值(EOF)。有人可以向我解释为什么吗?
int main(){
int c, nl = 0;
while ((c = getchar()) != EOF)
if (c == '\n')
++nl;
printf("%d\n", nl);
}
最佳答案
你忘记了一些括号。以下是您的代码当前执行的操作:
int main(){
int c, nl = 0;
while ((c = getchar()) != EOF){
if (c == '\n'){
++nl;
}
}
printf("%d\n", nl);
}
以下是您可能想要根据缩进执行的操作:
int main(){
int c, nl = 0;
while ((c = getchar()) != EOF){
if (c == '\n'){
++nl;
printf("%d\n", nl);
}
}
}
在 C 语言中,空格大多被忽略。如果您想在一个 block 中一起运行多个语句,则需要用方括号将该代码括起来 {}
关于C 代码仅在 ^Z 之后打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51811017/