- ベストアンサー
教えてください!!
文字を入力する。例えば、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); }
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#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です"に変更。
その他の回答 (4)
- edomin
- ベストアンサー率32% (327/1003)
「どうしてこの場合は%sではなくて、%cなのですか」 此処で出力しようとしているのは文字列ではなく、文字です。 C言語では、文字と文字列は区別されます。(簡単に言うと、最後に「nul」を待っています。) 詳しくはこちらをどうぞ。 http://www9.plala.or.jp/sgwr-t/c/sec02.html#s2-4
お礼
ありがとうございます。理解できました。
- edomin
- ベストアンサー率32% (327/1003)
どういう風に実行して、どういうエラーが出ました?
補足
文字を入力して、番号を入力したら、実行が終了してしまいました。caseにあるprintfの部分が出ませんんでした。
- edomin
- ベストアンサー率32% (327/1003)
「puts」は「printf」に変更しましょう。
補足
変更して、コンパイルはできましたが、実行しても、番号で示した文字がでません。どこが駄目ですか、教えてください。
- shinyu
- ベストアンサー率26% (5/19)
switch(no,str[]) の()の中には,変数はひとつだけですよ.
補足
str[]を消してコンパイルできたのですが、実行しても、番号で示した文字がでません。教えてください。お願いします。
補足
ありがとうございます。おかげさまでできましたが、どうしてこの場合は%sではなくて、%cなのですが、教えてください。