我是C的新手,所以这个问题可能听起来很愚蠢。我总是有一个长度为2的const char *变量。现在我需要将它传递给struct变量。 struct变量应该是char数组[2](因为它总是只需要两个字节)或者是char *。我之所以要问的是,使用char *将为指针创建空间(4字节或8字节)但我真的只需要2个字节。这是最好的方法吗?如果使用char数组[]是更好的方法,我应该使用strcpy将char *变量复制到char数组[] ??
答案 0 :(得分:5)
如果您确信它总是2个字节,那么使用数组就没有问题。只需始终使用strncpy
和朋友确保您不会超支。记住要使它长3个字节以容纳null char。您可以获取指向数组的指针以进行阅读,其行为与char*
到malloc
内存的行为相同。
答案 1 :(得分:0)
“我有一个长度为2的const char * 变量。现在我需要将它传递给结构变量”
如果您知道该字符串的长度始终为2,则使用固定大小为3的数组(包括空终止字符)是完全合理的:
struct myStruct {
char code[3];
};
和某处:
struct myStruct m;
const char* src = "ab";
strncpy(&myStruct.code[0], src, 3);
但是如果你无法确保src
的长度不超过2,你最好这样做:
strncpy(&myStruct.code[0], src, 2);
myStruct.code[2] = '\0';