C 尺寸长度不正确?
MessageMaxLength始终给我一个值4,即使长度大于4。为什么会发生这种情况,我该如何解决?它的类型是size\u t,我没有在任何地方声明它,它只是一个传入的值:C 尺寸长度不正确?,c,C,MessageMaxLength始终给我一个值4,即使长度大于4。为什么会发生这种情况,我该如何解决?它的类型是size\u t,我没有在任何地方声明它,它只是一个传入的值: place_value(int task, struct PDB *llist, char *theMessage, size_t theMessageMaxLength) 按如下方式调用上述方法: place_value(task, llist, theMessage, sizeof(theMessage)); 我
place_value(int task, struct PDB *llist, char *theMessage, size_t theMessageMaxLength)
按如下方式调用上述方法:
place_value(task, llist, theMessage, sizeof(theMessage));
我假设这是长度设置为4的地方,但是,如果我的消息更大,它不应该设置为更大的值吗?我如何增加尺寸,使其不只是4
然后在传递到的函数中这样使用:
strncpy(llist->data1, theMessage, theMessageMaxLength);
llist->data1[theMessageMaxLength] = '\0';
看起来你把sizeof和strlen搞混了 sizeoftheMessage只提供char*的大小,在您的情况下,char*是指针-4字节。如果需要字符串的长度,则需要使用strlentheMessage
看起来你把sizeof和strlen搞混了 sizeoftheMessage只提供char*的大小,在您的情况下,char*是指针-4字节。如果需要字符串的长度,则需要使用strlentheMessage
您正在测量指针的大小,在32位平台上为4 您正在测量指针的大小,在32位平台上为4 sizeoftheMessage与sizeofchar*完全相同。也许您对以下情况感到困惑:
char theMessage[1024];
/* ... some code here ...*/
printf("sizeof(theMessage): %zd\n", sizeof(theMessage));
如果为消息分配内存,则应提供其大小
编辑:作为一个侧节点,您可能对strndup感兴趣,它自动分配内存,并在目标字符串的末尾附加一个空字符。当然,你必须小心,别忘了释放它。sizeoftheMessage与sizeofchar*完全相同。也许您对以下情况感到困惑:
char theMessage[1024];
/* ... some code here ...*/
printf("sizeof(theMessage): %zd\n", sizeof(theMessage));
如果为消息分配内存,则应提供其大小
编辑:作为一个侧节点,您可能对strndup感兴趣,它自动分配内存,并在目标字符串的末尾附加一个空字符。但当然,你必须小心,别忘了释放它