c - & 符号 '&' 添加了不必要的字符

标签 c

我正在尝试将客户端套接字的字符发送到服务器套接字。当我在服务器端获取字符时,我会得到一些额外的字符和符号。谁能告诉我出了什么问题。在发送之前,我已经打印了字符,可以使用以下代码。

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/

相关文章:

ios - 如何在 iOS 中获取任意线程的正确帧指针?

c - 我的函数应该复制 `char*` 参数吗?

c - 用 C 编写代码时使用 '\n'

c++ - 为什么不能像这样复制 char 数组 charArray ="some string";

c - 为什么 Eclipse 的 C 应用程序在调用 `system("clear")`(在 stdlib.h 中定义)时启动终端打印垃圾?

C - 调试断言失败 : _CrtIsValidHeapPointer(block)

c - 哈希表泄漏内存

c - 错误: "an array may not have elements of this type"

在 C 中不使用 main() 编译和运行程序

c - 如何修改const变量的值?