错误无效转换从int到const char * [fpermissive]在C中

时间:2017-05-08 21:15:43

标签: c sockets client-server webclient

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

错误

  

错误无效从int转换为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);
  }
}

我尝试了stackoverflow中没有运气的解决方案

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

问题在于代码:

strlen的(IBUF)

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