2013-02-11 4 views
0

문자열의 모음 및 숫자를 감지하는 함수를 쓰려고합니다. 문자열을 반복하면서, 한 줄짜리 if 문을 사용하여 문자가 모음인지 확인하려고합니다. 아래 코드 ...문자열의 모음 검색

void checkString(char *str) 
{ 
    char myVowels[] = "AEIOUaeiou"; 

    while(*str != '\0') 
    { 
     if(isdigit(*str)) 
      printf("Digit here"); 
     if(strchr(myVowels,*str)) 
      printf("vowel here"); 
     str++; 
    } 
} 

숫자 검사가 완벽하게 작동합니다. 그러나 "(strchr (myVowels, * str))"은 작동하지 않습니다. 그것은 공식 및 실제 매개 변수 1에 대해 다른 유형을 말합니다. 누구든지 나를 도울 수 있습니까? 감사합니다.

+3

당신이 포함나요'string.h'를? – cnicutar

+0

함수에 전달하기 전에 str *을 char로 typecasting 해보십시오. – Techmonk

+0

@Techmonk'* str '은 이미'char'이므로 아무 것도 캐스트 할 필요가 없습니다. 있는 그대로 작동해야합니다. – cnicutar

답변

1

대부분의 경우 적절한 헤더 파일을 포함하지 않았을 수 있습니다.

이 잘 작동합니다 :

#include <stdio.h> 
#include <ctype.h> 
#include <string.h> 

void checkString(const char *str) 
{ 
    char myVowels[] = "AEIOUaeiou"; 

    printf("checking %s... ", str); 

    while(*str != '\0') 
    { 
     if(isdigit(*str)) 
      printf("Digit here "); 
     if(strchr(myVowels,*str)) 
      printf("vowel here "); 
     str++; 
    } 

    printf("\n"); 
} 

int main(void) 
{ 
    checkString(""); 
    checkString("bcd"); 
    checkString("123"); 
    checkString("by"); 
    checkString("aye"); 
    checkString("H2CO3"); 
    return 0; 
} 

출력 (ideone) :

checking ... 
checking bcd... 
checking 123... Digit here Digit here Digit here 
checking by... 
checking aye... vowel here vowel here 
checking H2CO3... Digit here vowel here Digit here 
+0

인수를''의'is ...()'함수로'unsigned char'로 변환해야하는 경우가 있습니다. [매뉴얼 페이지] (http://www.manpagez.com/man/3/ctype/)를 참조하십시오. – unwind

+0

@unwind 흥미로운 세부 사항, 감사합니다. 우리가 ASCII 문자 (EBCDIC와 다른 것들은 사실상 멸종 된 것임)를 다루고 있다고 가정하고 모든 것이 잘된다. –

+0

누락 된 헤더와 관련이 있다고 생각해보십시오. 감사의 말은 이제 완벽하게 작동합니다 – kype