0

iveは私のコードを変更してカウンターを含めました。それは機能しているようですが、その実装方法が気に入らないのです。各文字をカウントし、単語が終了する前にカウントを出力するようです。

#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main (int argc, char** argv)
{
char C;
char vowels[]={'a','e','i','o','u'};
int counter=0;
    do
    {
    C = getchar();
    if(memchr(vowels,C, sizeof(vowels)))
        {printf("*\n");
        counter++;
        printf("%i", counter);
        }
    else
        {
        printf("%c",C);
        }



    }while (C!='Q');
}

ゲームの入力の出力は、次のようなものになります。

g*m*
2

今得ているすべてのimは

g*
1m*
2

また、大文字も小文字として読み取られるようにコードを変更するにはどうすればよいですか?Cにisupperやislowerのようなものはありますか?

4

1 に答える 1

1

カウンターを 1 回だけ出力する場合は、do-while ループの外に移動します。

#include <stdio.h>
#include <ctype.h>
#include <string.h>
int main (int argc, char** argv)
{
    char C;
    char vowels[]={'a','e','i','o','u'};
    int counter=0;
    while(1) {
        C = getchar();
        if(C == 'Q') { break; }
        C = tolower(C);
        if(memchr(vowels,C, sizeof(vowels))) {
            printf("*");
            counter++;
        }
        else
        {
            if(C == '\n') {
               printf("\n%i\n", counter);
               // reset the vowel counter here (dunno what the actual task is)
               counter = 0;
            } else {
               printf("%c",C);
            }
        }
    }

    return 0;
}
于 2012-05-31T15:51:55.243 に答える