2017-12-27 58 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;} 
} 

그것은

문제점이 함수는 난수

DIFF에 값을 modifes이다 난수에 변수의 값을 변경
+0

어느 번호를 인쇄합니까? 'diff'? – coderredoc

+1

더 많은 문맥을 제공하십시오. [mcve]를 시도하십시오. – Yunnosch

+1

또한'scanf ("\ n % d", & diff)'는 여분의 의심 등입니다 ...'scanf ("% d", & diff)'를 써야합니다. 'scanf'가 성공했는지의 여부를 결정합니다. 그리고 만약'diff'가 초기화되지 않았다면 UB가됩니다. – coderredoc

답변

0

scanf의 형식 지정자가 문제 일 수 있습니다. '\ n (공백) % d'으로 지정하셨습니다. 그래서, 그것은 같은 방식으로 입력을 기대합니다. 당신이 입력 (10)하려는 경우,

(공간) 10

당신이 만약 돈을 this-

(AN은 첫 번째 줄에 아무것도 입력하지 않고 Enter 키를 누릅니다) 같은이어야한다 이 양식에 값을 입력하면 손상된 값을받습니다. 따라서이 모든 것 대신 scanf 문을 scanf("%d",&diff)으로 변경하십시오. 이 방법이 효과가있을 수 있습니다.

1

결국 "inscodifica"함수에서 값이 임의로 수정 되었기 때문에 문제가 발생했습니다