2017-06-20 97 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); 

     } 
    }  

    } 
}