質問させていただきます。以下にソースコードを書きますが、その中の条件分岐のcaseのところを整数型定数でなく文字で判別できるようにしたいのです。
今回の場合だと、Eが引数として与えられたらEドライブに、FならFドライブにといった具合にしたいのですがどうしたら良いでしょうか?
switch(atoi(ppcArgv[1])){
case 1:
MoveFileToDir(newname, TEXT("E:\\"));
DeleteFile(newname);
DeleteFile(oldname);
break;
case 2:
MoveFileToDir(newname, TEXT("F:\\"));
DeleteFile(newname);
DeleteFile(oldname);
break;
case 3:
MoveFileToDir(newname, TEXT("G:\\"));
DeleteFile(newname);
DeleteFile(oldname);
break;
default:
DeleteFile(newname);
DeleteFile(oldname);
}
switch(ppcArgv[1] -'A' + 1) {
・
・
・
}
では駄目?
ってか、入力値は大文字限定なのかな?
小文字も入力されて来る可能性があるならば、それらの対処も必要だよ。
> その中の条件分岐のcaseのところを整数型定数でなく文字で判別できるようにしたいのです。
文字定数なら何の問題なくそのまま可能です。
char c;
switch (c)
{
case 'A':
case 'a':
...
break;
case 'B':
case 'b':
...
break;
...
}
これが文字列で、となるとそうもいきませんが。
皆さん回答ありがとうございます。
今回作成するプログラムではコマンドプロンプトなどで第一引数にA〜D、第二引数にE〜Fを与え、それぞれ与えられた引数の文字と一致するドライブを選択するものにしたいと思っています。
言い訳をしたくはないのですが今まで条件分岐を扱ったことがないので分かりません。
一度試してみて結果が出たらもう一度書き込みます。
っていうか switch/case なんぞまったくもって要らないと思うんだけど。
sprintf で十分 (TCHAR を使うのであれば _stprintf)
完成しました!!
大変ためになるアドバイスありがとうございました。
> っていうか switch/case なんぞまったくもって要らないと思うんだけど。
ですね。条件分岐する必要性が感じられません。
> case 1:
> MoveFileToDir(newname, TEXT("E:\\"));
> case 2:
> MoveFileToDir(newname, TEXT("F:\\"));
この辺りのコードに違和感を感じてはいたんですけど。
まぁ、質問のタイトルが「switch文のcaseの使い方について」ということで...