文字配列を宣言し、後でそれを埋めたい。しかし、エラーが発生します:
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)を指定します。そうしないと、未定義の動作/セグメント障害のリスクがあります。