アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

例えば…

int main(void){

char buf[5];

buf = 'b';


switch(buf){

case 'a':

 ・
 ・
 break;

case 'b':

 ・
 ・
 break;

}

A 回答 (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;
  }
 }
}

上記の様な事がしたいのでしょうか?
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/26 09:32

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':
...
...
}
となります。

「文字」「文字列」「文字の配列」を混同しないように気をつけてください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/26 09:32

char buf[5];



char buf;
にする
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/26 09:31

char buf[6] = "ABCDE";



char buf[6] = {'A', 'B', 'C', 'D', 'E', '\0'};
です。

“文字列”は数値のようにswitchや==で比較することは「出来ません」。
“文字”はswitchや==で比較することが「出来ます」。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/26 09:30

>char buf[5];と書いたのは


>5文字入るという意味で書いたのですが
>配列5つ作ったことになったのでしょうか?

最後(5番目)は'\0'なので、実質4文字。
また、char buf[5]; は誰がどう見ても要素5の配列宣言。
理解できてますか?

>5文字入るという意味で書きたい場合
>どのように書けば宜しいでしょうか?

5文字使いたい場合 char buf[5 + 1]; とすれば判りやすいかも。
いずれにしても、C言語における文字と文字列を復習しましょう。

すなわち char buf[5];と宣言したとき、
単体で buf を記述するとどういう意味になるか。

>>ただ、通例switchを使って文字比較をするケースは比較的に稀ですが。
>文字比較をする場合は
>どのようにすれば宜しいでしょうか?

『文字』と『文字列(文字の配列)』を厳密に区別しましょう。
『文字』の比較はすなわち数値の比較。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/26 09:29

がると申します。


んっと…とりあえず
> char buf[5];
という宣言であれば最低限
buf[0] = 'b';
という代入式になります…というのは置いておくとして。
# ついでに書くと。switch(buf) もおかしくて、これは switch(buf[0]) になりますね。

1文字の文字比較であれば、書かれている方法で「不可能ではない」です。
ただ、通例switchを使って文字比較をするケースは比較的に稀ですが。

この回答への補足

ご返事有り難うございました。

>> char buf[5];
>という宣言であれば最低限
>buf[0] = 'b';
char buf[5];と書いたのは
5文字入るという意味で書いたのですが
配列5つ作ったことになったのでしょうか?

5文字入るという意味で書きたい場合
どのように書けば宜しいでしょうか?

>ただ、通例switchを使って文字比較をするケースは比較的に稀ですが。
文字比較をする場合は
どのようにすれば宜しいでしょうか?

補足日時:2006/09/25 13:58
    • good
    • 0

できますが、文字は一文字です。



つまり

switch(buf[0])
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/25 13:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A