一五零号 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 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)