1. ホーム
  2. c

[解決済み] C言語でchar配列をコピーする方法は?

2022-03-12 13:26:36

質問

C言語では、2つのchar配列があります。

char array1[18] = "abcdefg";
char array2[18];

の値をコピーする方法 array1 から array2 ? こうすればいいんですか? array2 = array1 ?

解決方法は?

を直接行うことはできません。 array2 = array1 なぜなら、この場合、配列のアドレスを操作することになるからです ( char * )であって、その内部の値 ( char ).

概念的には、ソースのすべての文字を繰り返し処理することです ( 配列1 ) にコピーし、コピー先 ( 配列2 ). これを行うには、いくつかの方法があります。たとえば、単純なforループを書いたり、あるいは memcpy .

とはいえ、文字列の場合、推奨される方法は strncpy . などになるよくあるエラーを防ぐことができます。 バッファオーバーフロー (の場合、特に危険です。 array1 は、キーボード、ネットワークなどのユーザー入力から満たされます)。このように

// Will copy 18 characters from array1 to array2
strncpy(array2, array1, 18);

ファルケン教授(@Prof. Falken)がコメントで述べているように。 strncpy 悪になりうる . ターゲットバッファがソースバッファを含むのに十分な大きさであることを確認してください ( \0 を文字列の末尾に追加してください。)