2017-06-20 96 views
0

我正在制作一个元音检查器函数。我对这个语言有点新鲜。我读通过,我不能比较字符串文字和字符数组。这是真的?我的程序总是崩溃,我看不出有什么问题。任何人都可以向我解释为什么我的代码有问题。感谢您提供任何形式的意见。(C语言)检查字符串中的元音

void checkVowel(char someString[]){ 

    int i, len; 
    char compare; 

    len = strlen(someString); 
    printf("%d\n", len); 

    printf("you name in all uppercase: "); 
    printf(strupr(someString)); 


    for(i=0; i<len;i++){ 

     char compare = someString[i]; 



     if(compare == "A" || (strcmp(compare,"E"==0))|| compare == "I" || compare == "O" || compare == "U"){ 
      printf("\n%c", compare); 
     } 

    } 
} 
+1

'比较== “A”' - >'比较==“A''和'STRCMP(相比, “E” == 0)' - >'比较== 'E''因为'compare'的类型是'char',而不是'char *'。 – BLUEPIXY

+1

为什么你对待字符E与其他字符不同? – jacoblaw

+0

谢谢你们所有的投入,我已经找到了@ScottK先生所说的答案。谢谢你的提示 –

回答

0

您正在使用的strcmp来比较字符C字符串,将失败。当您尝试执行此操作时,应该看到编译器警告。不用比较字符和单字符字符串,只需比较一个字符。根本不需要使用strcmp。

请注意,使用strupr是Microsoft提供的非标准deprecated函数。使用toupper来代替:

#include <ctype.h> // defines toupper and tolower 
void checkVowel(char someString[]){ 
    int i, len; 

    len = strlen(someString); 
    printf("%d\n", len); 

    printf("you name in all uppercase: "); 
    printf(strupr(someString)); 

    for(i=0; i<len;i++) { 
     char compare = toupper(someString[i])); 
     if ((compare == 'A') || 
      (compare == 'E') || 
      (compare == 'I') || 
      (compare == 'O') || 
      (compare == 'U')) { 
      printf("\n%c", compare); 
     } 
    } 
} 
0

您可以通过以下尝试,我没有运行的代码,但我希望它的工作:

void checkVowel(char someString[]){ 

int i, len; 
char compare; 

len = strlen(someString); 
printf("%d\n", len); 

printf("you name in all uppercase: "); 
printf(strupr(someString)); 


    for(i=0; i<len;i++){ 

    char vowelArray[5] = [ 'A','E','I','O','U']; 
    char compare = someString[i]; 
    int j; 
    for (j = 0 ; j < 5; j++){ 

     if(compare == vowelArray[j]){ 

     printf("\n%c", compare); 

     } 
    }  

    } 
}