ID非公開

2020/9/27 15:22

33回答

C言語の問題です。入力した文字列の4文字目を入力した文字で置換するというプログラミングを作りたいのですが、自分の作ったものでは4文字以降が出力されません。どうすれば良いのか教えて頂きたいです。

C言語の問題です。入力した文字列の4文字目を入力した文字で置換するというプログラミングを作りたいのですが、自分の作ったものでは4文字以降が出力されません。どうすれば良いのか教えて頂きたいです。 #include <stdio.h> int main(void) { char str[80]; printf("5文字以上の文字列を入力してください: "); scanf("%s", &str); printf("1文字入力してください: "); scanf("%s", &str[3]); printf("%s\n", str); return 0; }

C言語関連12閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

2

scanf("%s", &str[3]); これは、str[3]を先頭にそれ以降を入力した文字で書き換えるという意味になってしまうため、 それ以降が全て書き換えられてしまいます。 その中には終端文字も含まれる為、入力したのが1文字であれば abcdefgh\0 ↓ X\0 を入力 abcX\0fgh\0 となるので、printfで出力すると abcX までが表示されます。 直接上書きする場合は一文字だけであれば、%cで行えば、一文字だけになります。

2人がナイス!しています

この返信は削除されました

その他の回答(2件)

0

一例として。 scanf("%s", &str[3]); ↓ scanf(" %c", &str[3]); %c の前の1空白文字は必須。 P.S. うまくいったところで、意味のあるCの学習だとは、正直 思えない。 scanf という1ライブラリ関数の ヘンテコなくせ を いくら熟知?したところで、あまり意味が無いというか。。。 https://ja.wikipedia.org/wiki/Scanf#scanf%E3%81%AE%E5%95%8F%E9%A1%8C%E7%82%B9%E3%81%A8%E5%9B%9E%E9%81%BF%E6%96%B9%E6%B3%95

0

for文を使って出力してみてください

ID非公開

質問者

2020/9/27 15:53

どのように使えば良いか分からないです…