(C语言)检查字符串中的元音

时间:2017-06-20 23:59:43

标签: c arrays string char character

我正在制作元音检查功能。我对这门语言有些新意。我读完了,我无法比较字符串文字和字符数组。这是真的?我的程序总是崩溃,我看不出是什么问题。任何人都可以向我解释为什么我的代码有问题。感谢您提供任何意见。

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);
        }

    }
}

2 个答案:

答案 0 :(得分: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);

      }
    }       

  }
}

答案 1 :(得分: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);
        }
    }
}