C 所有括号匹配时,输入末尾出现语法错误

C 所有括号匹配时,输入末尾出现语法错误,c,compiler-errors,syntax-error,C,Compiler Errors,Syntax Error,我意识到这种担心几乎总是由于一个简单的打字错误,但我一生都找不到这个错误的原因。我已经检查了多次括号,并检查了是否有遗漏,但没有发现任何错误。请原谅我初始化数组的那种令人厌恶的方式,有什么不对吗 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/time.h> #include <sys/types.h> #include <sys/s

我意识到这种担心几乎总是由于一个简单的打字错误,但我一生都找不到这个错误的原因。我已经检查了多次括号,并检查了是否有遗漏,但没有发现任何错误。请原谅我初始化数组的那种令人厌恶的方式,有什么不对吗

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <unistd.h>
#include <sys/poll.h>

#define BufferLength 100
#define SERVPORT 5011

int main(int argc, char * argv[])
{
  int sd, sd2, rc, length = sizeof(int);
  int totalcnt = 0, on = 1;
  char temp;
  char buffer[BufferLength];
  char init[10];
  struct sockaddr_in serveraddr;
  struct sockaddr_in their_addr;
  fd_set read_fd;
  struct timeval timeout;
  timeout.tv_sec = 60;
  timeout.tv_usec = 0;
  int new_sd;
  int nfds = 1; int len;
//..........................SOCKET SETUP..............................................||

  if((sd = socket(AF_INET, SOCK_STREAM, 0)) < 0)    
  {   
      perror("Socket error");     
      exit (-1); 
  }

  if((rc = setsockopt(sd, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on))) < 0)
  {   
      perror("socket setup error"); 
      close(sd); 
      exit (-1); 
  }

  memset(&serveraddr, 0x00, sizeof(struct sockaddr_in));
  serveraddr.sin_family = AF_INET;
  serveraddr.sin_port = htons(SERVPORT);
  serveraddr.sin_addr.s_addr = htonl(INADDR_ANY);

  printf("Using %s, listening at %d\n", inet_ntoa(serveraddr.sin_addr), SERVPORT);


//............................BINDING...............................................|| 

  if((rc = bind(sd, (struct sockaddr *)&serveraddr, sizeof(serveraddr))) < 0)
  {   
      perror("server binding error");    
      close(sd);    
      exit(-1);    
  }


//............................LISTENING.............................................||

  if((rc = listen(sd, 8)) < 0)               
  {    perror("listen error"); close(sd);    exit (-1);}
  else
       printf("Ready for up to eight connections...\n");

  int sin_size = sizeof(struct sockaddr_in);


//............................ACCEPTING..............................................||

  if((sd2 = accept(sd, (struct sockaddr *)&their_addr, &sin_size)) < 0)
  {    perror("Server-accept() error");   close(sd);    exit (-1);  }

  printf("Got connection from the accursed client: %s\n", inet_ntoa(their_addr.sin_addr));

  FD_ZERO(&read_fd);
  FD_SET(sd2, &read_fd);

//..................................POLL STUFF.......................................||

  int i,n;
  int m = 0;
  char ** init0 = (char**)malloc(9);
  for( m; m<10; m+=1)
       init0[m] = (char*)malloc(100);
  char * left = (char*)malloc(100);
  char * enter = (char*)malloc(100);
  char ** Tinit0 = (char**)malloc(9);
  for(m = 0; m<10; m+=1)
      Tinit0[m] = (char*)malloc(100);

  memset(left,0,100);
  for(m = 0; m<10; m+=1)
     memset(Tinit0[m],0,100);
  for(m = 0; m<10; m+=1)
    memset(init0[m],0,100);
  memset(enter, 0, 100);
  strcpy(enter,"Entered:_  ");
  strcpy(left,"Left: ");

  struct pollfd ufds[9];
  ufds[0].fd = sd;    
  ufds[0].events = POLLIN; 
  ufds[1].fd = sd2;
  ufds[1].events = POLLOUT;
  ufds[2].fd = sd2;
  ufds[2].events = POLLOUT;
  ufds[3].fd = sd2;
  ufds[3].events = POLLOUT;
  ufds[4].fd = sd2;
  ufds[4].events = POLLOUT;
  ufds[5].fd = sd2;
  ufds[5].events = POLLOUT;
  ufds[6].fd = sd2;
  ufds[6].events = POLLOUT;
  ufds[7].fd = sd2;
  ufds[7].events = POLLOUT;
  ufds[8].fd = sd2;
  ufds[8].events = POLLOUT;

  //timeout = (6000);

  n = poll(ufds, 9, 40000);
  do{
      for (i = 0; i < 9; i++)
      {
         if(ufds[i].revents == 0)
             continue;

         if (ufds[i].fd == sd)
         {
             do
             {
                 new_sd = accept(sd2, NULL, NULL);
                 ufds[nfds].fd = new_sd;
                 ufds[nfds].events = POLLIN;
                 nfds++;
              } while (new_sd != -1);
          }
          else 
          { 
             do
             {
                 rc = recv(ufds[i].fd, buffer, sizeof(buffer), 0);
                 len =rc;
                 if(strcmp(init0[i],"") == 0)                          // IF INITAL HAS NOT BEEN SET UP
                 {                                                  // (DURING FIRST CONNECTION FROM CLIENT)
                     if((rc == 1) && (FD_ISSET(sd2, &read_fd)))
                     {
                        printf("initial from client is: %s\n",buffer);
                        strcpy(init0[i],buffer);
                        printf("init0 is: %s\n", init0[i]); Tinit0[i] = init0[0];
                      }
                     strcat(enter, init0[i]); 
                     printf("string enter is: %s , about to try write enter\n",enter);
                     for(m = 1; m <9; m+=1) 
                         rc = send(ufds[m].fd, enter, 20, 0);
                 } 
                 strcat(Tinit0[i],"__");
                 for(m = 1; m <9; m+=1)
                      rc = send(ufds[m].fd, Tinit0[i], 100, 0);       
                 if(rc==0)
                 {
                     strcat(left, init0[i]);
                     printf("%s\n",left);
                     for(m = 1; m <9; m+=1)
                         rc = send(ufds[m].fd, left, 100, 0);
                 }
             } while(1==1);
           } //end of else
       } //end of for
   } //end of do 

}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#定义缓冲区长度100
#定义ServPort5011
int main(int argc,char*argv[])
{
int-sd,sd2,rc,长度=sizeof(int);
int totalcnt=0,on=1;
焦炭温度;
字符缓冲区[BufferLength];
char init[10];
serveraddr中的结构sockaddr\u;
在其地址中的结构sockaddr\u;
fd_设置为read_fd;
结构timeval超时;
timeout.tv_sec=60;
timeout.tv_usec=0;
国际新南威尔士大学sd;
int nfds=1;int len;
//插座设置||
if((sd=socket(AF\u INET,SOCK\u STREAM,0))<0)
{   
perror(“套接字错误”);
出口(-1);
}
if((rc=setsockopt(sd,SOL_SOCKET,SO_REUSEADDR,(char*)&on,sizeof(on)))<0)
{   
perror(“套接字设置错误”);
关闭(sd);
出口(-1);
}
memset(&serveraddr,0x00,sizeof(struct sockaddr_in));
serveraddr.sin_family=AF_INET;
serveraddr.sin_port=htons(SERVPORT);
serveraddr.sin\u addr.s\u addr=htonl(INADDR\u ANY);
printf(“使用%s,在%d\n侦听”,inet\u ntoa(serveraddr.sin\u addr),SERVPORT);
//有约束力
if((rc=bind(sd,(struct sockaddr*)&serveraddr,sizeof(serveraddr)))<0)
{   
perror(“服务器绑定错误”);
关闭(sd);
出口(-1);
}
//倾听||
如果((rc=listen(sd,8))<0)
{perror(“侦听错误”);关闭(sd);退出(-1);}
其他的
printf(“准备好最多八个连接…\n”);
int sin_size=sizeof(结构sockaddr_in);
//接受||
if((sd2=accept(sd,(struct sockaddr*)及其地址和大小))<0)
{perror(“Server-accept()错误”);关闭(sd);退出(-1);}
printf(“从该死的客户端获得连接:%s\n”,inet_ntoa(他们的地址sin_addr));
FD_ZERO(&read_FD);
FD_集(sd2和读取_FD);
//投票材料||
inti,n;
int m=0;
char**init0=(char**)malloc(9);

对于(m;m您的
do{}while()
循环缺少
while
关键字。

您的
do{}while()
循环缺少
while
关键字。

GCC报告:
178:1:错误:预期为'while'before''token
@Rufflewind:它还警告第50行和第78行的
printf
格式字符串不正确。@iharob:我已经删除了我的评论,我会马上删除这个。请随时删除您的“哇,对不起”注释。让我们从这段代码开始,当通过编译器运行时,会生成一个很长的警告消息数组。如果修复了这些警告,语法错误可能会很容易看到。代码缺少子函数SGCC报告所需的原型:
178:1:error:expected'while'before'}标记
@Rufflewind:它还警告第50行和第78行的
printf
格式字符串不正确。@iharob:我已经删除了我的评论,我会马上删除这个评论。请随意删除您的“哇,对不起”注释。让我们从这段代码开始,当编译器运行时,会生成一长串警告消息。如果您修复了这些警告,语法错误可能会很容易被发现。代码缺少子函数所需的原型。我是个十足的傻瓜。谢谢。我是个十足的傻瓜。谢谢。