0

文字配列を宣言し、後でそれを埋めたい。しかし、エラーが発生します:

char line[BUFSIZE+1];
strcpy(line,"Memory is Full", sizeof(line));

エラーは次のとおりです。

wrong number of arguments in call to strcpy. 

これを達成するための代替手段はありますか?

4

3 に答える 3

3

お持ちの場合は、を使用してstrlcpy()ください。それはあなたがすることを期待strncpy()するかもしれないことをします。

それができない場合は、使用することをお勧めしsnprintf()ます。

于 2012-10-25T13:57:48.373 に答える
2

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()と、(私の例のように)追加されます。

于 2012-10-25T13:43:40.853 に答える
1

strcpyサイズ/長さの引数を取りません。代わりに使用memcpyしますが、バッファのサイズではなく、コピーされる文字列のサイズ(length + 1)を指定します。そうしないと、未定義の動作/セグメント障害のリスクがあります。

于 2012-10-25T13:43:34.047 に答える