C语言代码求助:读取回车键后未正确执行递增打印逻辑
问题修复与说明
修复后的代码
#include <stdio.h> int main() { int i = 0; if (getc(stdin) == '\n') { i++; printf("%d\n", i); } return 0; }
原代码的问题点
- if语句末尾的多余分号:原代码
if (getc(stdin));后的分号会让if仅执行一个空语句,后续的大括号块会无条件执行,完全失去了条件判断的意义。去掉这个分号,才能让大括号内的代码成为if的条件执行体。 - 未匹配回车键字符:
getc(stdin)会读取任意输入字符,你需要明确判断读取的是否是回车键(对应ASCII字符'\n'),所以要把条件改为getc(stdin) == '\n',确保只有按下回车键时才执行递增和打印操作。 - printf格式字符串错误:原代码中
printf("%d ",i);的换行写法不符合C语言语法,必须用转义字符\n表示换行,即printf("%d\n", i);,否则会触发编译错误。
运行修复后的代码,按下回车键后,变量i会从0递增为1并被打印出来,符合你的需求。
内容的提问来源于stack exchange,提问作者Sritharni Natarajan
相关产品推荐
相关产品推荐

