一五零号 2021-08-02 21:00 采纳率: 66.7%
浏览 38
已结题

C语言实现顺序表时如何调取数据项?


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define MAXSIZE 10

#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int status;
typedef struct{
//声明一个变量体 
    char id[15];//this is error!!!!!! in C not have string
    char name[25];
    char price[5];
}book;

typedef struct{
    book *elem;
    int    length; 
}sqlist;
status init_sq(sqlist*l)
{//构造一个空的顺序表 
    l->elem=(book*)malloc(MAXSIZE*sizeof(book));
    if(!l->elem) exit (OVERFLOW);
    l->length=0;
    return OK;
}
status input_sq(sqlist *l)
{
        FILE *fp;
        fp =fopen("book.txt","r");     
        if((fp=fopen("book.txt","r"))==NULL)
        {
              printf("can't open the file!!!\n");
             printf("error:%s\n",strerror(errno));
              exit(0);
        }
           while(!feof(fp))
        {
            int i=0;
            fscanf(fp,"%s %s %s",&l->elem[i].id,&l->elem[i].name,&l->elem[i].price);                          
            printf("%-15s  %-25s  %-5s\n",l->elem[i].id,l->elem[i].name,l->elem[i].price);
            i++;
            l->length++;                            
        }fclose(fp);
        printf("%d\n",    l->length);
}
void main() 
{   sqlist l;
    int i,j,a,b,choose;
    double price;
    book e;
    printf("1. 建立\n");
    printf("2. 输入\n"); 
    printf("3. 查找\n"); 
    choose=-1;
    while(choose!=0)
    {
        printf("请选择"); 
         scanf("%d",&choose);
         switch(choose)
         {
             case 1://创建顺序表
                 if(init_sq(&l)) printf("创建顺序表成功");
                else printf("fail build");
                 break;
            case 2://顺序表信息输入
                input_sq(&l);
                break;
            case 3://顺序表的seek                            
                printf("%-15s",l.elem[3].id);    **     //这里有问题?____**
                printf("%d\n",    l.length);
                break;    
        }    
    }
}

这个程序是完全用C语言写的,没有用c++,所以string这个变量不能用,它的前两部都可以实现,只有第三步,其中length那里可以实现,但id的那里会出现我电脑里各个磁盘的文件夹。我将内容挪到input_sq里也是只有在while里才有用,出了while就不行了,请问这是什么原因?

  • 写回答

1条回答 默认 最新

  • orange4reg 2021-08-02 22:01
    关注

    int i=0;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月10日
  • 已采纳回答 8月2日
  • 创建了问题 8月2日

悬赏问题

  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: