2015-01-28 1 views
-2

나는 배열의 크기를 알지 못하고 모든 요소에 대해 isdigit (array [i])를 사용한다.sizeof (array)가 올바르게 작동하지 않는 것 같다.문자 배열이 c에서 유효한 정수> = 1인지 확인하는 방법은 무엇입니까?

다음을 시도합니다 :

모든 문자가 숫자인지 확인하십시오.

문자열을 int로 변환하십시오. 이> 0

int all_digits(char *string){ 

    short i; 
    for(i=0; i < sizeof(string); i++){ 

     if (!isdigit(string[i])){ 
      //Non-digit found. 
      return 1;   
     } 

    } 
    //All of them are digits. 
    return 0; 
} 

첫 번째 부분입니다

확인은 내가 할 수없는 일이다.

+1

이를 배열이 포인터 인 경우 확실히 작동하지 않습니다 –

+1

명확히하십시오 1) 배열의 크기를 모르겠다 2) 제대로 작동하지 않는 것 같습니다 –

+0

내 함수를 추가했습니다. – OHHH

답변

2
int n = strlen(string); 
for(i=0; i < n; i++) 

sizeof(pointer)이다.

편집 :

이 또는 당신이 경우

for(i=0; string[i] != '\0'; i++) 
+0

각 루프 반복에서 'strlen'을 불필요하게 계산합니다. 길이를 한 번 계산 한 다음 사용하십시오.'int len ​​= strlen (string); for (i = 0; i CiaPan

+0

@CiaPan 네, 100 % 맞습니다. 나는 myslef 많은 답변을 제안했다. 편집 내용을 확인하십시오. 감사 – Gopi

0

코드에서 stringchar *입니다. sizeof(string)은 배열이 아닌 char * 크기를 제공합니다.

all_digits() 함수에 다른 매개 변수를 사용하여 배열의 크기를 명시 적으로 전달하고 루프 상태 검사 for에이 값을 사용해야합니다. 당신에게 줄 것이다 특히 char *의 경우,이에 대한 더 나은, 더 작고 청소기 접근 방식이 strlen()는 [통과 적절한 aguments 가정]을 사용하여 달성 될 수있다 : 어쩌면이

int all_digits(char *string, int size){ 

    short i; 
    for(i=0; i < size; i++){ 

     if (!isdigit(string[i])){ 
      //Non-digit found. 
      return 1;   
     } 

    } 
    //All of them are digits. 
    return 0; 
} 

주 같은

길이는 문자열입니다. 당신은 strlen()이 충돌 할 수 있습니다 다른 널 종료 문자열 유효한 문자열을 전달 할 필요가 같은

sizeof(array)

+0

@Gopi 매우 사실입니다. –

0

을 가질 수 있습니다 당신은 sizeof 기능을 사용하여 올바른 길이를 얻을 수 없습니다.

sizeof 함수는 지정된 데이터 형식의 크기를 지정합니다. strlen 기능을 사용할 수 있습니다. 사용하는 동안

strlen 당신이

당신이 문자열 길이의 정확한 값을 얻을하지 않았다에는 null 값이없는 마지막에 문자열을 고려, 다음을 관리 할 수 ​​있습니다. 이를 위해서는 배열의 크기를 다른 매개 변수로 보내야하거나 문자열의 마지막 값에 null 값을 넣어야합니다.

그러면 쉽게 얻을 수 있습니다.

0

간단하게 모든 문자 테스트 문자열을 따라 반복 : 그러나

int all_digits(char *string){ 
    if(*string == 0)    // empty string - wrong 
     return 1; 

    for(; *string != 0; string++) // scan the string till its end (a zero byte (char)0) 
     if (!isdigit(*string))  // test for a digit 
      return 1;    // not a digit - return 

    return 0;      // all characters are digits 
} 

을 만 테스트 문자열이 숫자로 구성되어 있으며 가까이 그 수치를 결정하는 당신을하지 않는 경우 ...

관련 문제