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,它需要目标、源和大小。

IE:

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,但给它正在复制的字符串的大小(长度+1),而不是缓冲区的大小,否则您将面临未定义的行为/段错误的风险。

于 2012-10-25T13:43:34.047 回答