lmlxfn 发表于 2008-6-26 21:13

帮我看看哪里出错了...

#include "stdio.h"
#include "string.h"
#include "stdlib.h"  
#define MAXSIZE 20   
#define  B     90   
typedef  struct xinxi
  {
  char  m[MAXSIZE][B];
  int  rear ,front;
  }Xinxi;
Xinxi *q;   //创建结构体类型变量

struct Xinxi *init_xinxi()
  {
          q=(Xinxi *)malloc(sizeof(Xinxi));
          q->front=0;
          q->rear=0;
          }   //创建队列

  int in_xinxi(char d[])
  {
          if (q->rear==MAXSIZE)
          {
                  printf("信息存满,请删除后再存储!\n");
                  return 0;
          }
          else
      {
        strcpy(q->m[q->rear],d);
                q->rear=q->rear+1;
                return 1;
          }
  }


   int read_xinxi()
   {
          if(q->front==q->rear)
           {
                   printf("手机中没有信息\n");
               return 0;
           }
           else
           {
                  
                   printf("%s\n",q->m[q->rear]);               
            return 1;  //信息读取完成
           }
   }


   void clear_xinxi()
   {
           q->front=0;
           q->rear=0;
   }  //清空信息


  main()
  {
   int i,j,opt,k;
   char x[B];
   i=j=0;
   j=0;
   init_xinxi(q);
    while(1)
  {
   printf("========================\n");
   printf("写信息请按1\n");
   printf("读信息请按2\n");
   printf("清空信息请按3\n");
   printf("退出请按0\n");
   printf("========================\n");
   scanf("%d",&opt);

   switch(opt)
   {
   case 1:
           printf("请输入小于%d个字符的信息\n",B);
           scanf("%s",x);          
      
       break;
   case 2:
           printf("以下是所有存储的信息\n");
       read_xinxi();
           break;
   case 3:
           printf("确定清空请按1\n");
           scanf("%d",&k);
           if (k==1)
           clear_xinxi();
           default:
               exit(0);
  
  }  
  }
}
//2的时候读取不了啊,请问哪里出错了??

漫游者李李西 发表于 2008-6-26 22:58

首先,创建init_xinxi既然有返回值,但你没返回,而且tydef后返回值应该是Xinxi *,调用时加入了参数,但你申明时没有参数。写入信息后有没有存入。

页: [1]

编程论坛