C 中从 int 到 const char* [fpermissive] 的错误无效转换
error invalid conversion from int to const char* [fpermissive] in C
当我在第 21 行运行以下代码时出现此错误
错误
error invalid conversion from int to const char* [fpermissive]
代码
receive(struct sockaddr_in sockad, struct message m){
int rc;
int i;
int ibuf;
i = sizeof(sockad);
rc = recvfrom(sd,&m,strlen(ibuf),0,(struct sockaddr *)&sockad,(unsigned long)&i ); /* line 21*/
if (rc < 0) {
perror("recvfrom"); exit(1);
}
}
我尝试了 Whosebug 中的解决方案,但没有成功
错误是由于strlen(ibuf)
...当int ibuf
...
您应该将字符串传递给 strlen
,尽管您可能打算使用 sizeof(m)
。
您可能还打算使用指针,如 struct message *m
,因此:
void receive(struct sockaddr_in * sockad, struct message * m){
int rc;
socklen_t i;
i = sizeof(*sockad);
rc = recvfrom(sd, m, sizeof(*m),0, sockad, &i ); /* line 21*/
if (rc < 0) {
perror("recvfrom"); exit(1);
}
}
问题出在代码上:
strlen(ibuf)
ibuf 是整数,不是字符串。
当我在第 21 行运行以下代码时出现此错误
错误
error invalid conversion from int to const char* [fpermissive]
代码
receive(struct sockaddr_in sockad, struct message m){
int rc;
int i;
int ibuf;
i = sizeof(sockad);
rc = recvfrom(sd,&m,strlen(ibuf),0,(struct sockaddr *)&sockad,(unsigned long)&i ); /* line 21*/
if (rc < 0) {
perror("recvfrom"); exit(1);
}
}
我尝试了 Whosebug 中的解决方案,但没有成功
错误是由于strlen(ibuf)
...当int ibuf
...
您应该将字符串传递给 strlen
,尽管您可能打算使用 sizeof(m)
。
您可能还打算使用指针,如 struct message *m
,因此:
void receive(struct sockaddr_in * sockad, struct message * m){
int rc;
socklen_t i;
i = sizeof(*sockad);
rc = recvfrom(sd, m, sizeof(*m),0, sockad, &i ); /* line 21*/
if (rc < 0) {
perror("recvfrom"); exit(1);
}
}
问题出在代码上:
strlen(ibuf)
ibuf 是整数,不是字符串。