我正在尝试将客户端套接字的字符发送到服务器套接字。当我在服务器端获取字符时,我会得到一些额外的字符和符号。谁能告诉我出了什么问题。在发送之前,我已经打印了字符,可以使用以下代码。
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 - & 符号 '&' 添加了不必要的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33903014/