为什么“ Hello World !!”的大小是多少?只显示为8? 我正在尝试通过TCP客户端/服务器程序中的send()发送此消息,并且由于sizeof似乎无法正确读取而无法发送整个字符数组
char *message = "Hello World!!";
int test = sizeof message;
int test2 = sizeof 'H';
printf("%d", test);
printf("%d", test2);
结果:
(gdb)打印测试
$ 1 = 8
(gdb)打印测试2
$ 2 = 4
这是我程序中仅发送“ Hello Wo”的代码片段
if((numbytes = send(sockfd, message, sizeof message, 0)) == -1){
perror("recv");
exit(1);
}
答案 0 :(得分:4)
此:
char *message = "Hello World!!";
int test = sizeof message;
返回指针的大小,在您的系统中,该大小为8。
在Size of pointer of integer type vs Size of int*中了解更多信息。
正如@SomeProgrammerDude所说,请使用strlen()
来获取C字符串(即以null终止的字符串)的长度。