C语言程序运行时printf语句无输出问题咨询
C程序启动后无printf输出故障排查
代码存在多处问题,核心原因是for循环语法错误触发死循环,具体故障点如下:
- 核心触发点:for语句末尾多余分号
代码中for(i=1; 1<num; i++);末尾的分号会把空语句判定为for循环的唯一执行体,后续的printf("Hello World")完全不在循环作用域内。只要循环判断条件成立,程序会一直跑空循环,永远执行不到printf逻辑,自然没有输出。 - 输入读取格式符类型不匹配
变量num定义为int类型,但scanf使用%c格式符读取输入,该格式符只会读取输入字符的ASCII编码值存入num,比如输入数字2,实际存入的是字符'2'的ASCII码50,和预期读入整数2的逻辑完全不符,会直接导致循环判断结果异常。 - 循环判断条件书写错误
从代码逻辑看,预期是通过i的递增控制循环次数,判断条件应该写为i < num,现有代码写的1<num是拿固定值1和num比较,和循环变量i完全无关,只要num大于1,条件就永远为真,直接触发无限死循环。 - main函数写法不符合C语言标准
标准C规定main函数返回值为int类型,正确写法为int main(void),现有代码写的void main()是非标准写法,在部分编译器下会触发编译报错或运行时未定义行为。
修正后参考代码
#include <stdio.h> int main(void) { int num, i = 1; scanf("%d", &num); for(i = 1; i < num; i++) printf("Hello World\n"); return 0; }
修正后输入整数即可得到对应次数的打印输出。
内容的提问来源于stack exchange,提问作者cmscgod
相关产品推荐
相关产品推荐

