【发布时间】:2015-11-24 20:17:39
【问题描述】:
我正在尝试将客户端套接字的字符发送到服务器套接字。当我在服务器端获取字符时,我会得到一些额外的字符和符号。任何人都可以建议我出了什么问题。在发送之前,我已经打印了字符,使用以下代码就可以了。
r_sendto(int sockfd, char buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen) {
printf("\nMessage rec: %c", buf); //Message rec: h
printf("Message rec: %s", &buf); // Message rec: h�o�
int sendto_ret_val = sendto(sockfd, &buf, len, flags, dest_addr, addrlen);}
当我使用与号“&”时,为什么它会添加额外的符号。我必须使用“&”发送字符,而在接收方我得到了额外的符号,这给我带来了麻烦。任何人都可以清除我隐藏的逻辑&。提前致谢。
在接收部分我有以下代码:
char buffer[BUFSIZE];
r_recvfrom(socket_list[socket_index].sockfd, buffer, BUFSIZE, 0, (struct sockaddr *) &(socket_list[socket_index].brp_useraddr), &clntAddrLen);
puts(buffer); // it prints h�w�
我很困惑,如何在接收端删除这些不需要的符号和字符。
【问题讨论】:
-
%s需要一个以空字符结尾的 字符串。但是&buf并不指向C 字符串,因为buf只是一个普通字符。你要做的是undefined behaviour。 -
您可能会发现这很有帮助:stackoverflow.com/questions/8019615/…
标签: c