2011-12-08 2 views
4

사용자 입력에 숫자 만 포함되는지 여부를 확인하고 싶습니다. 그래서, 나는 다음과 같은 코드를 사용 : 그것은 잘 작동경고 : 포인터와 정수 사이의 비교 [기본값으로 사용] c

for(i = 0; argv[1][i] != NULL; i++) 
    if(!isdigit(argv[1][i])) 
    { 
     printf("Error"); 
     return -1; 
    } 

을하지만 난이 경고 있어요 : argv[1][i] 이후

warning: comparison between pointer and integer [enabled by default] 

는 정수이며 NULL 포인터입니다. 어떻게 이러한 경고를 피할 수 있습니까?

답변

14

NULL은 널 종결 문자와 동일하지 않습니다. 대신 '\0'을 사용해야합니다.

+0

+1 멋진데 작동합니다. –

+0

+1, 잘 작동합니다. 감사합니다. – HenryChuang

1

문자 비교의 경우이 값을 사용할 수 있습니다 (또는 그 값은 0).

for(i = 0; argv[1][i] != '\0'; i++) 
3

argv [1] [i]는 char이며 '\ 0'또는 0과 비교하면 더 명확합니다.