while循环(for循环)上的scanf错误,永久扫描

while循环(for循环)上的scanf错误,永久扫描,c,C,我不熟悉C编程和编写代码来确定m个测试用例的素因子分解。如果我一次只扫描一次,函数本身就可以工作,但当我尝试扫描m次时,它失败得很惨 我不知道为什么scanf()的循环有问题 int main(无效){ int n,j=0,m,print=0; int i=2,计数器=0; scanf(“%d”、&m); while(j

我不熟悉C编程和编写代码来确定m个测试用例的素因子分解。如果我一次只扫描一次,函数本身就可以工作,但当我尝试扫描m次时,它失败得很惨

我不知道为什么scanf()的循环有问题

int main(无效){
int n,j=0,m,print=0;
int i=2,计数器=0;
scanf(“%d”、&m);
while(j
与其说您的
scanf
行“有缺陷”,不如说,您在每次外部
while
循环开始时不重置
i
的值。因此,在该循环的第一次运行中,
i
以值
2
开始,但在后续运行中,它将以上一次运行结束后剩余的值开始


要解决这个问题,只需添加行
i=2
scanf(“%d”和&n)之前(或之后)行。

在未检查返回值的情况下,绝不能使用
scanf
。请尝试格式化字符串
%d”
,此外,如果您告诉我们您认为它以哪种方式失败会很有帮助。
&
与变量之间从未用
空格隔开。如果不检查返回值,则无法正确使用任何用户输入函数。