错误 在 C 语言中从 int 到 const char* [允许] 的转换无效



当我在第 21 行运行以下代码时出现此错误

错误

错误 从 int 到 const 字符的转换无效* [允许]

法典

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);
  }
}

我尝试了堆栈溢出的解决方案,但没有运气

该错误是由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);
  }
}

问题出在代码上:

斯特伦(伊布夫(

IBUF 是一个整数,而不是字符串。

最新更新