プロが教えるわが家の防犯対策術!

C言語の初心者です。質問なのですが、
配列の、ある位置に文字列を加える時はどうしたら言いのでしょうか?


char str[100];

str[10]から文字列 "ABCDE"というのを加えたいのです。

自分が考えられるのは

str[10] = 'A';
str[11] = 'B';
str[12] = 'C';
str[13] = 'D';
str[14] = 'E';

と入れていく方法しか思いつきません。
他にもっと見やすい方法等御座いませんでしょうか?

宜しくお願いします。

A 回答 (7件)

1:strcpy(&str[10],"ABCDE");


2:memcpy(&str[10],"ABCDE",5);

ライブラリを使うという回答でした
    • good
    • 0

#1 と違う回答なら、



str[10] = NULL;
strcat(str, "ABCDE");

とか。
    • good
    • 0

蛇足ながら、nagareさんの1の方法だと、"ABCDE"に加えて、


str[15]にNULLコードが入りますので、少し注意です。
    • good
    • 0

つっこまれてしまったので



strncpy(&str[10],"ABCDE",5);
    • good
    • 0

この問題は、str[10]からABCDEを入れたときに、


「そこで文字列が終わりになる」のか、「文字列の中間だけを替える」のかで回答が変わります。
文字列が終わりになる場合は#1の1か#2の方法、
その後にも文字列が続く場合には#1の2の方法が適当です。

Cの文字列は、ヌル文字('\0')で終わるということになっていますが、
これに起因するバグはけっこう多いです。ご注意ください。
    • good
    • 0

strncpy などを使う時にはヘッダをインクルードする必要があります。



例、

#include <string.h>

などをファイルの先頭に書きます。

参考URL:http://www.bohyoh.com/CandCPP/C/Library/strncpy. …
    • good
    • 0

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;
}
    • good
    • 0

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