我想声明字符数组,然后想填充它。但出现错误:
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,它需要目标、源和大小。
IE:
int main()
{
char i[6];
strncpy(i, "Hello", sizeof(i));
printf("%s\n", i);
return 0;
}
>> ./a.out
>> Hello
注意:'\0'
如果您完全填写您的 char[],您必须自己附加,否则strncpy()
将为您完成(如我的示例中所示)。
strcpy
不接受大小/长度参数。改为使用memcpy
,但给它正在复制的字符串的大小(长度+1),而不是缓冲区的大小,否则您将面临未定义的行为/段错误的风险。