C程序调用scanf后无法执行printf输出问题求助
问题分析与解决
你的程序无法正常回显输入的核心问题出在scanf的格式字符串上:
scanf("%s\n", input)里的\n完全多余。scanf处理%s时会自动跳过开头的空白字符(包括换行、空格),而格式字符串里的\n会让它持续等待输入,直到遇到非空白字符或EOF才会结束读取,导致程序卡在输入阶段,无法执行后续的printf。
另外补充一个新手易忽略的细节:printf("$")之后,标准输出默认是行缓冲模式,没有换行符的话,提示符可能不会立即显示在终端上,建议加上fflush(stdout)强制刷新输出缓冲区。
修正后的代码:
#include <stdio.h> int main() { char input[50]; printf("$"); fflush(stdout); // 强制刷新缓冲区,确保提示符立即显示 scanf("%s", input); printf("\n %s", input); return 0; }
编译运行后,输入内容就能正常回显了。
内容的提问来源于stack exchange,提问作者anonymous
相关产品推荐
相关产品推荐

