文字配列を宣言し、後でそれを埋めたい。しかし、エラーが発生します:
char line[BUFSIZE+1];
strcpy(line,"Memory is Full", sizeof(line));
エラーは次のとおりです。
wrong number of arguments in call to strcpy.
これを達成するための代替手段はありますか?
お持ちの場合は、を使用してstrlcpy()ください。それはあなたがすることを期待strncpy()するかもしれないことをします。
それができない場合は、使用することをお勧めしsnprintf()ます。
strcpy()2つの引数をstrncpy()取り、3を取ります。
宛先、ソース、サイズを使用するstrncpyの使用を検討していたと思います。
すなわち:
int main()
{
char i[6];
strncpy(i, "Hello", sizeof(i));
printf("%s\n", i);
return 0;
}
>> ./a.out
>> Hello
注:'\0' char []を完全に入力する場合は、自分自身を追加する必要があります。そうしないstrncpy()と、(私の例のように)追加されます。
strcpyサイズ/長さの引数を取りません。代わりに使用memcpyしますが、バッファのサイズではなく、コピーされる文字列のサイズ(length + 1)を指定します。そうしないと、未定義の動作/セグメント障害のリスクがあります。