我目前正在通过一本“C Programming a modern approach”一书学习C并遇到这段代码。当我尝试运行它时,在键入“abc”等连续字符并按 Enter(新行)后,没有打印任何内容。请解释这里发生了什么。
char ch;
do {
scanf("%c" , &ch);
} while (ch != '\n');
printf("%c", ch);
你要求用户使用 scanf 输入一个字符。这是循环发生的until用户输入' ' 或换行符(与按回车键相同),这是循环中断的时间。
你的 print 语句将打印变量 ch 中的字符,此时它将是 ' '(因为此变量仅存储一个字符,即您键入的最后一个字符)。
当您运行程序时,这个换行符可能是不可见的,所以您可能看不到它。您可以在循环之后添加另一个 print 语句,如果该 print 语句以换行符开始,您就知道 ' ' 打印在上一行。
类似的东西:
char ch;
do {
scanf("%c" , &ch);
} while (ch != '\n');
printf("%c", ch);
printf("I should show up on a newline");