第十五题为什么输入后,回车没反应 循环结束不了 无法进行下面打印的指令
第二个循环,缺少花括号,导致i=i-1在循环外面没有机会被执行。
while (scanf("%c", &ch[i]) == 1) 少个 &
【以下回答由 GPT 生成】
你遇到的问题是在输入后按回车没有结束循环的原因是因为回车键产生了一个额外的换行符。另外,你应该使用%c
来接收并存储输入的字符,而不是使用%s
,因为%s
会读取到空格或换行符为止。以下是修改后的代码,可以解决你的问题:
#include <stdio.h>
int main() {
char ch[254];
int i = 0;
while (scanf(" %c", &ch[i]) == 1) {
i++;
}
i--; // 减去最后一个换行符
while (i >= 0) {
printf("%c", ch[i]);
i--;
}
return 0;
}
这里修改了两个地方: 1. 在scanf
中的格式化字符串中加入了一个空格,即 " %c"
。这样可以忽略换行符或其他空白字符,只读取到有效的字符。 2. 在第一个while
循环结束后,需要将i
减去1,因为最后一个字符是换行符,我们不希望将其打印出来。
这样修改后,你就能够正常输入字符,按回车键结束循环,并将输入内容倒序打印出来了。
【相关推荐】