2017-10-05 8 views
1

ここに私のコードです: 私はポインタの使用に問題があります。したがって、*文字列は現在のアドレスの文字を示し、string + = 1はポインタのアドレスを次の文字を指し示すように増加させますが、プログラムは毎回0を返します。もともと、別の整数変数がアドレスに追加されていましたが、誰かがそれを削除するように言いました。Cでは、ポインタを使って文字列中の母音の数を数えますか?

void menu(); 
int vowels(char *); 
int consonants(char *); 
void CtoUpper(char *); 
void CtoLower(char *); 
void displayString(char *); 

int main() 
{ 
menu(); 
} 

void menu() 
{ 
char *string, string_holder[100], choice, input, c = ' '; 

int index = 0; 

printf("Please enter a string:"); 
while ((c = getchar()) != '\n'); 
{ 
     string_holder[index] = c; 
     index++; 
} 
string_holder[index] = '\0'; 
choice = ' '; 
string = string_holder; 

while (choice != 'X') 
{ 
     printf("      Menu\n"); 
     printf("-------------------------------------------------\n"); 
     printf("A) Count the number of vowels in the string\n"); 
     printf("B) Count the number of consonants in the string\n"); 
     printf("C) Convert the string to uppercase\n"); 
     printf("D) Convert the string to lowercase\n"); 
     printf("E) Display the current string\n"); 
     printf("X) Display the current string\n\n"); 

     scanf(" %c", &choice); 

     if (choice == 'A') 
     { 
      printf("The number of vowels in the string is "); 
      printf("%d\n\n", vowels(string)); 
     } 
     /*else if (choice == 'B') 
     { 
      printf("The number of consonants is in the string is "); 
      printf("%d\n\n", consonants(string)); 
     } 
     else if (choice == 'C') 
     { 
      CtoUpper(string); 
      printf("The string has been converted to uppercase\n\n"); 
     } 
     else if (choice == 'D') 
     { 
      CtoLower(string); 
      printf("The string has been converted to lowercase\n\n"); 
     } 
     else if (choice == 'E') 
     { 
      printf("Here is the string:\n"); 
      displayString(string); 
     }*/ 
} 
} 

int vowels(char *string) 
{ 
int number_of_vowels = 0; 

while (*string != '\0') 
{ 
     switch (*string) 
     { 
      case 'a': 
      case 'A': 
      case 'e': 
      case 'E': 
      case 'i': 
      case 'I': 
      case 'o': 
      case 'O': 
      case 'u': 
      case 'U': 
       number_of_vowels += 1; 
       break; 
     } 
     string++; 
} 
return number_of_vowels; 
} 

答えて

0

あなたのプログラムでは、間違って ";"後で空のボディでループしながらループしているループ -

while ((c = getchar()) != '\n'); 

このため、 ";" whileループの本体のコードは期待どおりに実行されません。 ";"あなたのプログラムは動作します。

+0

プログラムを修正しました。ありがとうございました! – Gideon

+0

@Gideonこのような答えがあなたの質問に対する解決策を提供してくれたなら、それを受け入れてください。それはあなたに両方の評判を与え、将来の読者にこの解決策があなたのために働いたことを伝えます。 –

関連する問題