こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

プログラミングおかしいところ探してください

#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) で終了しました。
何がまずいのでしょうか。

投稿日時 - 2014-05-01 23:32:19

QNo.8577348

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

Wr5

source.cpp(9): warning C4018: '<=' : signed と unsigned の数値を比較しようとしました。
ってことで、一応ビルドは通りましたね。
signedの変数iとunsignedのstrlen()の戻り値での比較ってことですかね。
# strlen()の戻り値はsize_tでしたが。

>if (a[i] == 'ワ'&&a[i + 1] == 'ン'){
とかはintへの暗黙の型変換でもされたかと。

まぁ、期待通りに動作しないことに変わりはありませんが。
#1にて書かれているので細かいことは書きませんけど。

投稿日時 - 2014-05-02 01:28:00

ANo.2

本当にこのプログラムなんだとしたら, そもそもコンパイルできないのでは.

投稿日時 - 2014-05-01 23:55:36

ANo.1

charは1バイトまでしか文字が入りません。
よって、char1つで漢字やカナを表わすことはできません

よって
a[i] == 'ワ'&&a[i + 1] == 'ン'
はほぼ確実に成り立ちません。



あと
> PDB ファイルを開けないか、ファイルが見つかりません。
これは、デバッグ時に、元のソースコードの情報を読み出そうとしてが見つからない、ということですが
通常、配布されていたりOSの付属していたりするDLL等は、デバッグ情報を削除してあり、読めないのが通常です。
よって、このメッセージは無視していいです

投稿日時 - 2014-05-01 23:47:51