字符数组填充

时间:2012-10-25 13:41:26

标签: c file-io

我想声明字符数组,后来想要填充它。但是得到错误:

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

错误是:

wrong number of arguments in call to strcpy. 

有没有替代方案来实现这个目标?

3 个答案:

答案 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),而不是缓冲区的大小,否则会冒未定义的行为/段错误的风险。