• ベストアンサー

教えてください!!

文字を入力する。例えば、DFGHJ。次に番号を入力して、その番号に示された値を表示。ここでは、2が入力されれば、Fを表示するのですが、分かりません。 考えてみたのですが、コンパイルエラーで、出来ません。教えてください。宜しくお願いします。 #include <stdio.h> int main(void) { char str[6], no; printf("文字を入力する", str); scanf("%s", str); printf("番号を入力:"); scanf("%d", &no); switch(no,str[]) { case 0 : puts("%d番目は%sです",no, str[0]); break; case 1 : puts("%d番目は%sです",no, str[1]); break; case 2 : puts("%d番目は%sです",no, str[2]); break; case 3 : puts("%d番目は%sです",no, str[3]); break; case 4 : puts("%d番目は%sです",no, str[4]); break; case 5 : puts("%d番目は%sです",no, str[5]); break; } return(0); }

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

  • ベストアンサー
  • edomin
  • ベストアンサー率32% (327/1003)
回答No.4

#2&3です。 以下に変更。 #include <stdio.h> int main(void) { char str[6]; int no; printf("文字を入力する"); scanf("%s", str); printf("番号を入力:"); scanf("%d", &no); switch(no) { case 0 : printf("%d番目は%cです",no, str[0]); break; case 1 : printf("%d番目は%cです",no, str[1]); break; case 2 : printf("%d番目は%cです",no, str[2]); break; case 3 : printf("%d番目は%cです",no, str[3]); break; case 4 : printf("%d番目は%cです",no, str[4]); break; case 5 : printf("%d番目は%cです",no, str[5]); break; } return(0); } 変更点 noをint型に変更。 select文の中のprintfの書式を"%d番目は%cです"に変更。

jjjj27
質問者

補足

ありがとうございます。おかげさまでできましたが、どうしてこの場合は%sではなくて、%cなのですが、教えてください。

その他の回答 (4)

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.5

「どうしてこの場合は%sではなくて、%cなのですか」 此処で出力しようとしているのは文字列ではなく、文字です。 C言語では、文字と文字列は区別されます。(簡単に言うと、最後に「nul」を待っています。) 詳しくはこちらをどうぞ。 http://www9.plala.or.jp/sgwr-t/c/sec02.html#s2-4

参考URL:
http://www9.plala.or.jp/sgwr-t/c/sec02.html#s2-4
jjjj27
質問者

お礼

ありがとうございます。理解できました。

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.3

どういう風に実行して、どういうエラーが出ました?

jjjj27
質問者

補足

文字を入力して、番号を入力したら、実行が終了してしまいました。caseにあるprintfの部分が出ませんんでした。

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.2

「puts」は「printf」に変更しましょう。

jjjj27
質問者

補足

変更して、コンパイルはできましたが、実行しても、番号で示した文字がでません。どこが駄目ですか、教えてください。

  • shinyu
  • ベストアンサー率26% (5/19)
回答No.1

switch(no,str[]) の()の中には,変数はひとつだけですよ.

jjjj27
質問者

補足

str[]を消してコンパイルできたのですが、実行しても、番号で示した文字がでません。教えてください。お願いします。

関連するQ&A