2016-11-11 1 views
0

私は、Cスタイルの文字列で母音と子音を数え、文字列を大文字に変更する関数を作ろうとしています。関数を実行するたびに、常に "0"が返されます。これを修正するにはどうすればよいですか?助けてくれてありがとう。Cスタイルの文字列関数はどのように動作するのですか?

int Count(const char[], int counter){ 

counter= 0; 
for(int i = 0; line.length[]; i++){ 

    if(line[i] == 'a' || line[i] == 'e' || line[i] == 'i' ||  line[i] == 'o'  || line[i] == 'u'){ 

    --counter; 
} 

void upperCase(const char[]){ 

for(int i = 0; line.length[]; i++) { 
toupper(line[i]); } 

} 
+0

ようこそStackOverflow!あなたのコードはかなり長いです、[mcve]を作成しようとしてください。また、[小さなプログラムのデバッグ方法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にも興味があります。自分の問題を解決するなら、あなたの質問は良い答えを生む可能性が高いです。 [良い質問をするにはどうすればいいですか?](http://stackoverflow.com/help/how-to-ask)も参照してください。 –

答えて

1

Count() 0を返しませんでした。印刷の戻り値を取得していません。

そしてUpperCase()LowerCase()で、あなたが戻ってtext[i]toupper()tolower()の戻り値を割り当てる必要があります。それはあなたが値によってそれらを渡しているので、

text[i] = toupper(text[i]); 
+0

はい。そしてそれを行うために、渡すパラメータは一定ではありません。 –

1

母音と子音は常にので、その値は、これはあなたが参照することによって、それらを渡す必要がありますので、関数のプロトタイプは

になります修正するために変更されません、ゼロになり、あります
int Count(const char[], int&); //function heading int Count(const char text[], int& a) 
int Count2(const char[], int&); //function heading int Count2(const char text[], int &b) 

また、関数定義では値をデクリメントしていますか?それらは増分する必要があります。

関連する問題