我想声明字符数组,然后想填充它。但是获取错误:
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("%sn", i);
return 0;
}
>> ./a.out
>> Hello
注意:如果您完全填充char [],则必须亲自附加' '
,否则strncpy()
将为您做(如我的示例)。
strcpy
不需要大小/长度参数。而是使用memcpy
,但请将其大小(长度 1)复制而不是缓冲区的大小,或者您风险不确定的行为/segfaults。