user-0 提问: 求帮忙看看这个错误怎么改，在线等

回复:
user: user-0
content: 引用 6 楼 max_min_ 的回复:下面代码修改了下几个基础的错误，忘记修改了那些了，所以把代码全部贴上！ 逻辑问题还没仔细看，但是楼主这个基础错误太多，先不要搞这些复杂东西先， 应该先把基础打好，一步一步的来，不要搞太难的东西打击自己的积极性！   #include<stdio.h> #include<malloc.h> #include<string.h> #include<stdlib.h>  #define MAX_SIZE  20//定义循环队列的长度  typedef struct{            //初始化的动态分配存储空间     char*base;     char front;     char rear;     int full;//队列是否已满的标志位     int length; }Queue;      int creat_queue(Queue*q)      //初始化队列 {   if (q->base!=NULL)//队列已经存在，要先销毁     return 0;     q->base=(char*)malloc(MAX_SIZE*sizeof(char));     q->front=q->rear=0;     q->full=0;     q->length=0;     return 1; }  int en_queue(Queue*q,char e)      //入队 {        if(q->base==NULL)         return -1;//是队列不存在      else if(q->full==1&&q->front==q->rear)         return 0;//入队前考虑队列是否满了     else {         q->base[q->rear]=e;         q->rear=(q->rear+1)%MAX_SIZE;//实现循环,如果rear+1满了并不是真正的满了，可以循环         if(q->front==q->rear)             q->full=1;         return 1;     } } int out_queue(Queue*q,char* e) {     if(q->base==NULL)     return -1;//是队列不存在      if(q->full==0&&q->front==q->rear)         return 0; //出队前考虑队列是否为空     else {         *e=q->base[q->front];         q->front=(q->front+1)%MAX_SIZE;//修改front位置         if(q->front==q->rear)             q->full=0;//如果出队后两位置相同则队为空了         return 1;     }  }  int main() {     Queue q;     int i,a1,a2,a3,a4;     char e,k=NULL;     char *e1,*e2;     q.base=NULL;     e1=e2=&k;//对于指针最好这样初始化定义一下，因为只声明是没有分陪内存的，不能直接用*e     a1=creat_queue(&q);                            //初始化队列     if(a1==1){         printf("已初始化队列！");     }else{         printf("初始化失败!");     }     for(i=0;i<11;i++){ //依次进队列e，n，g，i，n，e，e，r，i，n，g；         printf("请输入第%d个字符",i+1);         scanf("%c",&e);         getchar();         a2=en_queue(&q,e);         if(a2==-1)         {             printf("队列不存在!\n");             break;         }         else if(a2==0)         {             printf("队列已满!\n");             break;         }         else         {             printf("已入队!\n");             q.length++;         }     }     a3=out_queue(&q,e1); //出队一个元素，输出该元素；     if(a3==-1)     {         printf("队列不存在，请先创建队列！\n");     } else if(a3==0){         printf("出队失败！因为队列为空！\n");     }else{         printf("OK!出队成功");         printf("出队元素为：%d\n",*e1);         q.length--;     }      printf("队列q的元素个数为：%d",q.length);       //输出队列q的元素个数；   for(i=0;i<3;i++){ //依次进队列元素d,e,f；          printf("请输入第%d个字符",i+1);         scanf("%c",&e);         getchar();         a2=en_queue(&q,e);         if(a2==-1)         {             printf("队列不存在!\n");             break;         }         else if(a2==0)         {             printf("队列已满!\n");             break;         }         else{             printf("已入队!\n");             q.length++;         }     }      printf("队列q的元素个数为：%d",q.length);       //输出队列q的元素个数；       for(i=0;i<13;i++){ //输出出队序列；          out_queue(&q,e1);         printf("%d：%c\n",i+1,*e1);         q.length--;     }     free(q.base);          //释放队列     q.base=NULL;  } 我一个一个修改好了。。。。。坑爹啊，谢谢你们啦

user: user-1
content: 下面代码修改了下几个基础的错误，忘记修改了那些了，所以把代码全部贴上！ 逻辑问题还没仔细看，但是楼主这个基础错误太多，先不要搞这些复杂东西先， 应该先把基础打好，一步一步的来，不要搞太难的东西打击自己的积极性！   #include<stdio.h> #include<malloc.h> #include<string.h> #include<stdlib.h>  #define MAX_SIZE  20//定义循环队列的长度  typedef struct{            //初始化的动态分配存储空间     char*base;     char front;     char rear;     int full;//队列是否已满的标志位     int length; }Queue;      int creat_queue(Queue*q)      //初始化队列 {   if (q->base!=NULL)//队列已经存在，要先销毁     return 0;     q->base=(char*)malloc(MAX_SIZE*sizeof(char));     q->front=q->rear=0;     q->full=0;     q->length=0;     return 1; }  int en_queue(Queue*q,char e)      //入队 {        if(q->base==NULL)         return -1;//是队列不存在      else if(q->full==1&&q->front==q->rear)         return 0;//入队前考虑队列是否满了     else {         q->base[q->rear]=e;         q->rear=(q->rear+1)%MAX_SIZE;//实现循环,如果rear+1满了并不是真正的满了，可以循环         if(q->front==q->rear)             q->full=1;         return 1;     } } int out_queue(Queue*q,char* e) {     if(q->base==NULL)     return -1;//是队列不存在      if(q->full==0&&q->front==q->rear)         return 0; //出队前考虑队列是否为空     else {         *e=q->base[q->front];         q->front=(q->front+1)%MAX_SIZE;//修改front位置         if(q->front==q->rear)             q->full=0;//如果出队后两位置相同则队为空了         return 1;     }  }  int main() {     Queue q;     int i,a1,a2,a3,a4;     char e,k=NULL;     char *e1,*e2;     q.base=NULL;     e1=e2=&k;//对于指针最好这样初始化定义一下，因为只声明是没有分陪内存的，不能直接用*e     a1=creat_queue(&q);                            //初始化队列     if(a1==1){         printf("已初始化队列！");     }else{         printf("初始化失败!");     }     for(i=0;i<11;i++){ //依次进队列e，n，g，i，n，e，e，r，i，n，g；         printf("请输入第%d个字符",i+1);         scanf("%c",&e);         getchar();         a2=en_queue(&q,e);         if(a2==-1)         {             printf("队列不存在!\n");             break;         }         else if(a2==0)         {             printf("队列已满!\n");             break;         }         else         {             printf("已入队!\n");             q.length++;         }     }     a3=out_queue(&q,e1); //出队一个元素，输出该元素；     if(a3==-1)     {         printf("队列不存在，请先创建队列！\n");     } else if(a3==0){         printf("出队失败！因为队列为空！\n");     }else{         printf("OK!出队成功");         printf("出队元素为：%d\n",*e1);         q.length--;     }      printf("队列q的元素个数为：%d",q.length);       //输出队列q的元素个数；   for(i=0;i<3;i++){ //依次进队列元素d,e,f；          printf("请输入第%d个字符",i+1);         scanf("%c",&e);         getchar();         a2=en_queue(&q,e);         if(a2==-1)         {             printf("队列不存在!\n");             break;         }         else if(a2==0)         {             printf("队列已满!\n");             break;         }         else{             printf("已入队!\n");             q.length++;         }     }      printf("队列q的元素个数为：%d",q.length);       //输出队列q的元素个数；       for(i=0;i<13;i++){ //输出出队序列；          out_queue(&q,e1);         printf("%d：%c\n",i+1,*e1);         q.length--;     }     free(q.base);          //释放队列     q.base=NULL;  }

user: user-0
content: 。。。。。泪崩了，赶着交作业，麻烦各位大虾帮忙改下好吗

user: user-2
content: 呵呵，楼主寻找智能改错机来啦。

user: user-3
content: 引用 1 楼 u010553752 的回复:在线等，就这一个错误了，急着交作业。。。。 哥们你这个不是就这一个错误 是有一群错误 编辑器是不见到语法错误 就不往下报了 你是少个} 但是 改完后 你会崩溃 会出现一群错误 不下10个

user: user-3
content: #include<stdio.h>  #include<malloc.h>  #include<string.h>  #include<stdlib.h>  #define MAX_SIZE  20//定义循环队列的长度  typedef struct{            //初始化的动态分配存储空间 char*base;  char front;  char rear;  int full;//队列是否已满的标志位 int length;  }Queue;  int creat_queue(Queue*q)      //初始化队列  {   if (q->base!=NULL)//队列已经存在，要先销毁        return 0;  q->base=(char*)malloc(MAX_SIZE*sizeof(char));  q->front=q->rear=0;  q->full=0;  q->length=0;  return 1;  }  int en_queue(Queue*q,char e)      //入队  {   if(q->base==NULL)          return -1;//是队列不存在 else if(q->full==1&&q->front==q->rear)          return 0;//入队前考虑队列是否满了 else {  q->base[q->rear]=e;      q->rear=(q->rear+1)%MAX_SIZE;//实现循环,如果rear+1满了并不是真正的满了，可以循环      if(q->front==q->rear)   q->full=1;  return 1;}  }  int out_queue(Queue*q,int*e)  {  if(q->base==NULL)          return -1;//是队列不存在     if(q->full==0&&q->front==q->rear)     return 0; //出队前考虑队列是否为空   else {  *e=q->base[q->front];  q->front=(q->front+1)%MAX_SIZE;//修改front位置     if(q->front==q->rear)  q->full=0;//如果出队后两位置相同则队为空了 return 1;  }   }   int main(){   Queue q;  int i,a1,a2,a3,a4;  char e,k=NULL;  char *e1,*e2;  q.base=NULL;      e1=e2=&k;//对于指针最好这样初始化定义一下，因为只声明是没有分陪内存的，不能直接用*e  a1=creat_queue(&q);                            //初始化队列 if(a1==1){  printf("已初始化队列！");  }else{  printf("初始化失败!");  } for(i=0;i<11;i++){ //依次进队列e，n，g，i，n，e，e，r，i，n，g； printf("请输入第%d个字符",i+1);  scanf("%c",&e);  getchar(); a2=en_queue(&q,e);  if(a2==-1){  printf("队列不存在!\n");break;  }  else if(a2==0){  printf("队列已满!\n");break;  }  else{  printf("已入队!\n");  q.length++;  }  }   a3=out_queue(&q,e1); //出队一个元素，输出该元素；  if(a3==-1)   {   printf("队列不存在，请先创建队列！\n");   } else if(a3==0){   printf("出队失败！因为队列为空！\n");   }else{   printf("OK!出队成功");   printf("出队元素为：%d\n",*e1);   q.length--;  }    printf("队列q的元素个数为：%d",q.length);       //输出队列q的元素个数；  for(i=0;i<3;i++){ //依次进队列元素d,e,f； printf("请输入第%d个字符",i+1);  scanf("%c",&e);  getchar(); a2=en_queue(&q,e);  if(a2==-1) printf("队列不存在!\n");  else if(a2==0){  printf("队列已满!\n");  }  else{  printf("已入队!\n");  q.length++;  }  }    printf("队列q的元素个数为：%d",q.length);       //输出队列q的元素个数；    for(i=0;i<13;i++){ //输出出队序列； out_queue(&q,e1);  printf("%d：%c\n",i+1,*e1);   q.length--;  }  free(q.base);          //释放队列 q.base=NULL;  return 0; }   已经把所有错误改掉 但是你程序逻辑 我根本看不进去 代码风格惨淡啊 看看代码大全吧 我半年前也就你这水平  主要错误  if else if else 不要加break的  第二点  .与->的区别 ->是指针指向其成员的运算符.是结构体的成员运算符  有问题可以继续问

user: user-0
content: 在线等，就这一个错误了，急着交作业。。。。