我想声明字符数组,后来想要填充它。但是得到错误:
char line[BUFSIZE+1];
strcpy(line,"Memory is Full", sizeof(line));
错误是:
wrong number of arguments in call to strcpy.
有没有替代方案来实现这个目标?
答案 0 :(得分:3)
如果有,请使用strlcpy()
。它会执行您期望strncpy()
做的事情。
如果没有,我建议你使用snprintf()
。
答案 1 :(得分: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
注意:如果您完全填充char [],则必须自己附加'\0'
,否则strncpy()
会为您执行此操作(如我的示例所示)。
答案 2 :(得分:1)
strcpy
不接受大小/长度参数。请改用memcpy
,但要给它复制的字符串的大小(长度+ 1),而不是缓冲区的大小,否则会冒未定义的行为/段错误的风险。