3

私は C++ を学び始めたばかりで、これは演習用に書いているプログラムです。

#include <iostream>
#include <string>
using namespace std;

int main ()
{
    int uppercase=0, lowercase=0, digits=0, other=0, i=0;
    int character;
    char* string;
    cout << "Enter a string!\n";
    cin.getline(string, 20); 

    while(true)
        {
        character = int(*(string+i));
        if (character==0)
            {
            break;
            }
        if (character > 64 && character < 91)
            {
            uppercase++;
            }
        if (character > 96 && character < 122)
            {
            lowercase++;
            }
        if (character > 47 && character <58)
            {
            digits++;
            }
        else
            {
            other++;
            }
        i++;
        }

    cout << "Upper case " << uppercase << "\n";
    cout << "Lower case " << lowercase << "\n";
    cout << "Digits " << digits << "\n";
    cout << "Others " << other << "\n";

    return 0;
}

結果の出力が終了すると、プログラムがクラッシュします。ここで本当に明らかな何かが欠けていますか?

副次的な質問: 変数 'other' は、そうであってはならない場合でも常に増加します。私はelseステートメントを間違って使用していますか?

4

5 に答える 5

0

文字を表すchar代わりに使用する必要があります。intこれintは、通常 4 バイトでありchar、1 バイトしかないためです (つまり、1 文字を表すのに十分です)。

于 2013-05-13T13:40:40.677 に答える