2

toUpper() の実装を行いました。100%うまくいきません。

コード :

char* toUpper(char* string)
{
    char* sv = string;
    while(*sv++ != '\0')
    {
        if( int(*sv) >= 97 || int(*sv) <= 122)  //Only if it's a lower letter
            *sv = char( *sv - 32);
    }
    return string;
}

小文字には 97 から 122 (ASCII) までの数字があり、大文字には 65 から 90 までの数字があることを私は知っています。小文字と大文字の間にちょうど 32 の数字があります。下の文字から 32 を引いたところです。

この関数を呼び出すコード:

char h[] = "Whats up?";
cout << toUpper(h) << endl;

プログラムが「WHATS UP?」を出力することを期待していました。しかし、代わりに「WHATS」を得ました。私は何を間違えましたか?

4

3 に答える 3