2013-07-28 2 views
0

EDIT : 와우. scanf 함수에서 '&'을 제외했습니다. 그래도 도움을 주셔서 감사합니다.For 루프가 C에서 분쇄됩니다

저는 Code :: Blocks를 사용하고 있으며 사용자에게 10 개의 숫자를 묻는 메시지를 표시하는 간단한 프로그램을 작성하려고합니다. 문제는, 그것은 질문을 인쇄 할 것이지만 일단 숫자를 입력하면, 아래의 scanf() ... 코드를 지정하는 대신 충돌이 발생합니다.

main() 
{ 
    int userNums[11] = {0}; 
    int x; 
    char displayOrder = '\0'; 

    for (x = 0; x <= 10; x++) 
    { 
    printf("Enter a number: "); 
    scanf("%d", userNums[x]); //code crashes here 
    } 
//code continues... 
+2

변경 '& userNums [x]' – BLUEPIXY

+0

위의 코드를 컴파일 할 때 경고 메시지가 나타납니다. 경고를 경고로 간주하십시오. – sujin

+0

가정을 작성하는 대신 사용중인 기능의 [documentation] (http://pubs.opengroup.org/onlinepubs/009695399/functions/scanf.html)을 읽어야합니다. –

답변

1

수정 :

scanf("%d", &userNums[x]); //code won't crash now 
+2

왜 충돌이 일어 났는지 설명 할 수 있습니까? –

+0

@ShafikYaghmour 아무도 허락하지 않는다. 내가 편집하기 전에 10 개의 다른 답변이 노란색으로 깜박 인다. – P0W

1

scanf와 표준 입력을 읽고 번째 인수에 결과를 넣어. 이 함수는 보낼 변수의 복사본을 가져 오기 때문에 포인터 여야합니다.

예 : scanf와는

0

은 변경의 인수는 주소 여야합니다 (포인터). 귀하의 경우 userNums[x]& 연산자가 필요합니다. userNums[x] 앞에

scanf("%d", userNums[x]); 

scanf("%d", &userNums[x]); 

&

에 오퍼레이터 변경 사용자에 의해 입력되는 데이터를 저장하기 scanf에 어드레스를 제공한다. & 연산자 (이 경우)가 없으면 scanf은 입력 값을 저장할 주소를 찾지 못하기 때문에 프로그램이 중단됩니다.

scanf("%d", &userNums[x]); 

설명 : 당신은 변수에 사용자가 주어진 값을 할당 scanf() 원하는

1

항상을 기억하고 그 값을 변경할 수 있도록 포인터를 필요로

scanf("%d", userNums[x]); //code crashes here 

scanf("%d", &userNums[x]); //code crashes here 

int i; 

scanf("Enter a number here : %d", &i); 
printf("number is %d", i); 
0

는이 방법 scanf()를 호출해야합니다. C 매개 변수는 사본으로 전달되기 때문에 변수의 주소를 scanf()으로 전달해야 수정 가능합니다. 변수의 주소를 가져 오려면 & 연산자 인 : &userNums[x]을 사용합니다.

관련 문제