C语言代码运行仅输出第一行 无法打印全部字符串问题求解
问题原因
- 程序执行到
scanf("%lf", &numb);语句时会进入阻塞等待状态,需要你输入一个合法的浮点数并按下回车键后,才会继续执行后续逻辑。你没有完成输入操作的前提下,后续的printf语句自然不会运行,看起来就像仅输出了第一行提示内容。 - 额外的潜在问题:你第一行的
printf输出内容末尾没有添加换行符,C标准库的标准输出流(stdout)默认启用行缓冲机制,只有遇到换行符、缓冲区填满、程序主动刷新缓冲区或者程序退出时,才会把缓冲区的内容打印到屏幕上,部分运行环境下可能会出现第一行提示语也暂时不显示的问题。 - 链接注意事项:代码中用到的
ceil、floor、round函数都属于数学库,使用gcc等编译器编译时需要额外添加-lm参数链接数学库,否则会出现链接报错无法生成可执行文件。
修复后参考代码
#include <stdio.h> #include <math.h> int main(void) { double numb; // 末尾加空格优化显示,也可加\n确保内容立刻输出 printf("Please enter a decimal place number: "); scanf("%lf", &numb); numb = ceil(numb); printf("大于等于该值的最小整数是 %f\n", numb); numb = floor(numb); printf("小于等于该值的最大整数是 %f\n", numb); numb = round(numb); printf("距离该值最近的整数是 %f\n", numb); return 0; }
编译运行示例
- 编译命令:
gcc test.c -o test -lm - 运行生成的可执行文件后,在提示语后输入任意浮点数(比如
3.14)按回车,就能看到所有输出内容。
内容的提问来源于stack exchange,提问作者Riku Esque
相关产品推荐
相关产品推荐

