#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就不行了,请问这是什么原因?