- 締切済み
プログラミングおかしいところ探してください
#include<iostream> using namespace std; int main() { int i = 0; char a[128]; cout << "やあ" << endl; cin >> a; while (i<= strlen(a)){ if (a[i] == 'ワ'&&a[i + 1] == 'ン'){ cout << "ニャア"; i = i + 2; } else if (a[i] == 'わ'&&a[i + 1] == 'ん'){ cout << "にゃあ"; i = i + 2; } else{ cout << a[i]; i++; } } return 0; } キーボードから入力された文字に「ワン」「わん」があれば「ニャア」「にゃあ」と言い換えるプログラムを組もうとしたのですが、デバックするとエラーが出ます。 'Project2.exe' (Win32): 'C:\Users\kazuaki\Documents\Visual Studio 2013\Projects\Project2\Debug\Project2.exe' が読み込まれました。シンボルが読み込まれました。 'Project2.exe' (Win32): 'C:\Windows\System32\ntdll.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。 'Project2.exe' (Win32): 'C:\Windows\System32\kernel32.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。 'Project2.exe' (Win32): 'C:\Windows\System32\KernelBase.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。 'Project2.exe' (Win32): 'C:\Windows\System32\msvcp120d.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。 'Project2.exe' (Win32): 'C:\Windows\System32\msvcr120d.dll' が読み込まれました。PDB ファイルを開けないか、ファイルが見つかりません。 プログラム '[5180] Project2.exe' はコード 0 (0x0) で終了しました。 何がまずいのでしょうか。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wr5
- ベストアンサー率53% (2173/4061)
source.cpp(9): warning C4018: '<=' : signed と unsigned の数値を比較しようとしました。 ってことで、一応ビルドは通りましたね。 signedの変数iとunsignedのstrlen()の戻り値での比較ってことですかね。 # strlen()の戻り値はsize_tでしたが。 >if (a[i] == 'ワ'&&a[i + 1] == 'ン'){ とかはintへの暗黙の型変換でもされたかと。 まぁ、期待通りに動作しないことに変わりはありませんが。 #1にて書かれているので細かいことは書きませんけど。
- Tacosan
- ベストアンサー率23% (3656/15482)
本当にこのプログラムなんだとしたら, そもそもコンパイルできないのでは.
- kmee
- ベストアンサー率55% (1857/3366)
charは1バイトまでしか文字が入りません。 よって、char1つで漢字やカナを表わすことはできません よって a[i] == 'ワ'&&a[i + 1] == 'ン' はほぼ確実に成り立ちません。 あと > PDB ファイルを開けないか、ファイルが見つかりません。 これは、デバッグ時に、元のソースコードの情報を読み出そうとしてが見つからない、ということですが 通常、配布されていたりOSの付属していたりするDLL等は、デバッグ情報を削除してあり、読めないのが通常です。 よって、このメッセージは無視していいです