• ベストアンサー

C初心者です。配列に文字列を代入の仕方

C言語の初心者です。質問なのですが、 配列の、ある位置に文字列を加える時はどうしたら言いのでしょうか? char str[100]; str[10]から文字列 "ABCDE"というのを加えたいのです。 自分が考えられるのは str[10] = 'A'; str[11] = 'B'; str[12] = 'C'; str[13] = 'D'; str[14] = 'E'; と入れていく方法しか思いつきません。 他にもっと見やすい方法等御座いませんでしょうか? 宜しくお願いします。

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

  • ベストアンサー
  • nagare
  • ベストアンサー率33% (280/831)
回答No.1

1:strcpy(&str[10],"ABCDE"); 2:memcpy(&str[10],"ABCDE",5); ライブラリを使うという回答でした

すると、全ての回答が全文表示されます。

その他の回答 (6)

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.7

No2さん,揚げ足とっていいですか (^^; #include <stdio.h> #include <string.h> int main(void) { char str[100]; strcpy(str,"abc"); str[10] = NULL; strcat(str, "ABCDE"); printf("%s\n",&str[10]); printf("%s\n",&str[3]); return 0; }

すると、全ての回答が全文表示されます。
  • driverII
  • ベストアンサー率27% (248/913)
回答No.6

strncpy などを使う時にはヘッダをインクルードする必要があります。 例、 #include <string.h> などをファイルの先頭に書きます。

参考URL:
http://www.bohyoh.com/CandCPP/C/Library/strncpy.html
すると、全ての回答が全文表示されます。
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.5

この問題は、str[10]からABCDEを入れたときに、 「そこで文字列が終わりになる」のか、「文字列の中間だけを替える」のかで回答が変わります。 文字列が終わりになる場合は#1の1か#2の方法、 その後にも文字列が続く場合には#1の2の方法が適当です。 Cの文字列は、ヌル文字('\0')で終わるということになっていますが、 これに起因するバグはけっこう多いです。ご注意ください。

すると、全ての回答が全文表示されます。
  • nagare
  • ベストアンサー率33% (280/831)
回答No.4

つっこまれてしまったので strncpy(&str[10],"ABCDE",5);

すると、全ての回答が全文表示されます。
  • Damsel
  • ベストアンサー率37% (18/48)
回答No.3

蛇足ながら、nagareさんの1の方法だと、"ABCDE"に加えて、 str[15]にNULLコードが入りますので、少し注意です。

すると、全ての回答が全文表示されます。
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

#1 と違う回答なら、 str[10] = NULL; strcat(str, "ABCDE"); とか。

すると、全ての回答が全文表示されます。

関連するQ&A