2017-12-27 257 views
1

我想我的程序得到一个单一的整数倍,但scanf函数不采取得当scanf函数不行

printf("\nHi, insert an integer here\n"); 
scanf("\n %d", &diff); 

,但是当我打印次数使用此功能后, :

void insCodifica(int codifica[], int diff){ 
    for(int i=0; i<sizeof(codifica); i++){ 
     codifica[i]=rand()%diff;} 
} 

它的变量的值改变为一个随机数

问题是,该函数modifes DIFF的值的随机数

+0

您打印哪个数字? 'diff'? – coderredoc

+1

请提供更多的上下文。试试[mcve]。 – Yunnosch

+1

另外'scanf(“\ n%d”,&diff)'是多余的suspiciuos等等......你应该写'scanf(“%d”,&diff)'..而不是继续猜测为什么不检查返回值'scanf'来确定它是否成功。如果'diff'未初始化,那么像这样使用它就是UB。 – coderredoc

回答

0

您在scanf中的格式说明符可能是问题所在。您已将它作为'\ n(空格)%d'。因此,它期望以相同的方式输入。如果你想输入10,它必须像这个 -

(按没有在第一行输入任何一个输入)

(空间)10

如果你不不会以这种形式输入值,它会收到损坏的值。所以,而不是所有这些,请将您的scanf语句更改为scanf("%d",&diff)。这可能会解决。

1

最后问题出现在函数“inscodifica”中,因为它随机修改了值