私は 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ステートメントを間違って使用していますか?