問題が発生していますが、何が間違っているのかわかりません。ループに問題があるのか、それとも cin バッファーがクリーンアップされていないのかはわかりません。C スタイルの文字列を大文字に変換するプログラムを実行していますが、ユーザーが 11 文字を超える文字を入力すると、関数は最初の 11 文字のみを表示し、それ以降は表示されません。問題は、 11 文字を超えると、私のループは停止せず、入力された回答が無効であることと、新しい文字列を入力したいかどうかをユーザーに伝え続けます。
3890 次
4 に答える
0
cStringToUpper fn を変更することにより、プログラムを修正できます。何かのようなもの:
...
int loopCount;
char buffer[256];
cin.getline(buffer,256);
strncpy(letters, buffer, 11);
//letters[11]= '\0';
cout << "\n" << endl;
...
于 2010-10-14T02:20:59.460 に答える
0
cin >> cont;
cout << "\n" << endl;
cin.ignore(200,'\n');
する必要があります
cin.ignore(200,'\n');
cin >> cont;
cout << "\n" << endl;
于 2010-10-14T01:35:34.113 に答える
0
cin.getline に 12 の長さのバッファーを指定すると、その数の文字だけが使用され、残りはバッファー内に残ります。代わりに使用する場合
string str;
cin.getline(str)
次に、行全体を取得し、11 文字でトリミングできます。cin-syntax で 100% ではありませんが、アイデアは得られます。
または、無視部分を上に移動します
cin >>cont;
そのように余分な文字を無視します。
于 2010-10-14T01:27:54.000 に答える
0
この問題は、バッファをクリアしようとしているときに発生します。cStringToUpper から戻ると、バッファにはまだ余分な文字がありますが、すぐに y/q を探しています。
于 2010-10-14T01:26:07.670 に答える