2017-12-27 254 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」中,因爲它隨機修改了值