c - 如何修复“格式指定类型'char *'但参数具有类型'char **'”错误
问题描述
我正在设置一个客户端套接字系统,除了引用 server_response 的部分之外,所有的代码都会生成。我正在关注一个教程,但评论中的其他人似乎没有这个问题。是什么导致了这个错误,我该如何解决?
我正在学习本教程大约一半时遇到了这个错误,并且评论或视频中没有解决这个问题。 https://www.youtube.com/watch?v=LtXEMwSG5-8
int network_socket;
network_socket = socket(AF_INET, SOCK_STREAM, 0);
//Address structure that holds access info for socket
struct sockaddr_in server_address;
server_address.sin_family = AF_INET; //specifies family or type of address, in this case an internet based one
server_address.sin_port = htons(13001); //specifies port
server_address.sin_addr.s_addr = INADDR_ANY;
//specifies socket, address point and the size of the address we are trying to connect to
//we save it as an int as if the connection is good it will return 0 if not it will be -1
int connection_status = connect(network_socket, (struct sockaddr *) &server_address, sizeof(server_address));
//checks for any error
if(connection_status == -1){
printf("There was an error connecting to the remote socket\n\n\n");
return 1;
}
//checks socket for any data size 250 chars long
char* server_response[300];
recv(network_socket, &server_response, sizeof(server_response), 0);
//prints data we get back
printf("server says:%s", server_response);
//closes socket
close(network_socket);
return 0;
}
解决方案
char* server_response[300];
// ^
这里不应该有*
。它应该是一个 300 个字符的数组。这样sizeof(server_response)
,下一行将计算为 300,recv()
并将从套接字读取多达 300 个字节。
推荐阅读
- .net - 如何将事件调用中的数据返回到 Blazor 中的 JS 互操作方法
- javascript - 如何在四列/网格中显示 HTML 表格
- git - 使用 Git-SVN 取消跟踪目录
- google-apps-script - 有没有办法通过脚本设置 Google 文件夹/文件的所有者?
- xml - 无法为我的 bean XML 配置文件获取 c-namespace 和 p-namespace
- google-play - 如何使用 android management api 静默推送 apk 并通过 android 设备策略安装它?
- python - 没有这样的文件或目录:'builtup/build0.jpg'
- c# - Azure Functions:绑定到 DocumentClient 与静态实例 - 推荐什么?
- mysql - 带有@ORM\Column 的 Symfony 4 Doctrine 引发 MySQL 1054 错误
- python - 如何将值附加到列表中的字典