2014-03-31 7 views
0

내 작업은 배열을 만드는 것입니다. 그렇게하려면 크기를 입력해야하지만 입력이 음수, 문자 또는 기호가 아닌지 확인해야합니다. 그렇게하기위한 함수를 만들었지 만, if가 제대로 작동하지 않습니다. 음수 나 문자를 입력하면 여전히 사용됩니다. 사용하는 포인터입니다정수에서 scanf 사용

은 주요 문제가
void getsize(int* size){ 
    printf("Enter the size of array\n"); 
    if ((scanf("%d", size) == 1) && (getchar() == '\n') && (size > 0)){ 
    printf("Size: %d entered\n", *size); 
    } else { 
    printf("wrong input\n"); 
    while(getchar() != '\n'); 
    } 
} 

getsize(&size); 
+0

' "% d"'어쨌든 비자 자 문자를 얻지 못합니다 ... – ThoAppelsin

답변

3

, 당신은 0 size에 값의 주소를 비교, 그래서 : 여기

은 내가 사용하는 기능입니다

(*size > 0) 

대신

(size > 0) 
2

포인터는 0과 e 값을 가리킨다. if에서 최종 비교로 다음을 사용하십시오.

1

if 문에 사용하십시오. 당신이이 나를 위해 작동 *size > 0

0
void getsize(int* size){ 
    printf("Enter the size of array\n"); 
    if ((scanf_s("%d", size) == 1) && (getchar() == '\n') && (*size > 0)){ 
     printf("Size: %d entered\n", *size); 
    } 
    else { 
     printf("wrong input\n"); 
     while (getchar() != '\n'); 
    } 
} 

해야 size > 0 확인된다. 주소가 아닌 값을 확인해야하기 때문에 크기> 0에서 * 크기> 0으로 변경하십시오.