• ベストアンサー

switch文で文字を比較することは出来ませんか?

switch文で文字を比較することは出来ませんか? 例えば… int main(void){ char buf[5]; buf = 'b'; switch(buf){ case 'a': ・  ・  ・  break; case 'b': ・  ・  ・  break; }

質問者が選んだベストアンサー

  • ベストアンサー
  • don_go
  • ベストアンサー率31% (336/1059)
回答No.7

int main(void){  int j;  char buf[5] = {'a', 'B', 'b', 'D', 'E'};  for(j = 0; j < 5; j++) {   switch(buf[j]){   case 'a':   ・   ・   ・   break;   case 'b':   ・   ・   ・   break;   }  } } 上記の様な事がしたいのでしょうか?

niiza
質問者

お礼

有り難うございました。 大変に参考になりました。

その他の回答 (6)

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.6

char buf1,buf2,buf3,buf4,buf5; buf1 = 'b'; ... ... switch(buf1) { case 'a': ... ... } ということなら可能です。 5つのchar変数を配列にするのであれば char buf[5]; buf[0] = 'b'; ... ... switch(buf[0]) { case 'a': ... ... } となります。 「文字」「文字列」「文字の配列」を混同しないように気をつけてください。

niiza
質問者

お礼

有り難うございました。 大変に参考になりました。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.5

char buf[5]; を char buf; にする

niiza
質問者

お礼

有り難うございました。 大変に参考になりました。

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.4

char buf[6] = "ABCDE"; は char buf[6] = {'A', 'B', 'C', 'D', 'E', '\0'}; です。 “文字列”は数値のようにswitchや==で比較することは「出来ません」。 “文字”はswitchや==で比較することが「出来ます」。

niiza
質問者

お礼

有り難うございました。 大変に参考になりました。

  • ddnp009
  • ベストアンサー率25% (15/58)
回答No.3

>char buf[5];と書いたのは >5文字入るという意味で書いたのですが >配列5つ作ったことになったのでしょうか? 最後(5番目)は'\0'なので、実質4文字。 また、char buf[5]; は誰がどう見ても要素5の配列宣言。 理解できてますか? >5文字入るという意味で書きたい場合 >どのように書けば宜しいでしょうか? 5文字使いたい場合 char buf[5 + 1]; とすれば判りやすいかも。 いずれにしても、C言語における文字と文字列を復習しましょう。 すなわち char buf[5];と宣言したとき、 単体で buf を記述するとどういう意味になるか。 >>ただ、通例switchを使って文字比較をするケースは比較的に稀ですが。 >文字比較をする場合は >どのようにすれば宜しいでしょうか? 『文字』と『文字列(文字の配列)』を厳密に区別しましょう。 『文字』の比較はすなわち数値の比較。

niiza
質問者

お礼

有り難うございました。 大変に参考になりました。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がると申します。 んっと…とりあえず > char buf[5]; という宣言であれば最低限 buf[0] = 'b'; という代入式になります…というのは置いておくとして。 # ついでに書くと。switch(buf) もおかしくて、これは switch(buf[0]) になりますね。 1文字の文字比較であれば、書かれている方法で「不可能ではない」です。 ただ、通例switchを使って文字比較をするケースは比較的に稀ですが。

niiza
質問者

補足

ご返事有り難うございました。 >> char buf[5]; >という宣言であれば最低限 >buf[0] = 'b'; char buf[5];と書いたのは 5文字入るという意味で書いたのですが 配列5つ作ったことになったのでしょうか? 5文字入るという意味で書きたい場合 どのように書けば宜しいでしょうか? >ただ、通例switchを使って文字比較をするケースは比較的に稀ですが。 文字比較をする場合は どのようにすれば宜しいでしょうか?

  • driverII
  • ベストアンサー率27% (248/913)
回答No.1

できますが、文字は一文字です。 つまり switch(buf[0])

niiza
質問者

お礼

ご返事有り難うございました。 大変に参考になりました。

関連するQ&A

専門家に質問してみよう