FILE *fp;
int i,k;
BOOK b[SIZE];
char s2[20];
fp=fopen("book.txt","r");
rewind(fp);
if(fp==NULL)
{
printf("文件打开错误!\n");
exit(0);
}
printf("请输入要查询的书名:");
scanf("%s",s2);
fread(b,sizeof(struct BOOK),SIZE,fp);
for(i=0;i<SIZE;i++)
{
if(strcmp(s2,b[i].name)==0)
{
printf("IBSN 书名 定价\n");
printf("%s%s%f",b[i].number,b[i].name,b[i].price);
printf("\n\n继续查询吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
search();
else
menu();
break;
}
else
printf("没有该图书信息\n继续查询吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
search();
else
menu();
fclose(fp);
用这个代码查文件里图书的信息,一直显示没有找到该图书信息,不知道是什么原因
修改如下,供参考:
void search(void)
{
FILE *fp;
int i,k;
BOOK b[SIZE];
char s2[20];
fp=fopen("book.txt","r");
//rewind(fp);
if(fp==NULL)
{
printf("文件打开错误!\n");
exit(0);
}
fread(b,sizeof(struct BOOK),SIZE,fp);
fclose(fp);
printf("请输入要查询的书名:");
scanf("%s",s2);
for(i=0;i<SIZE;i++)
{
if(strcmp(s2,b[i].name)==0)
{
printf("IBSN 书名 定价\n");
printf("%s%s%f",b[i].number,b[i].name,b[i].price);
//printf("\n\n继续查询吗?【按1继续/按其他键回主菜单】");
//scanf("%d", &k);
//if (k == 1)
// search();
//else
// menu();
break;
}
}
if(i>=SIZE) printf("没有该图书信息\n");
printf("继续查询吗?【按1继续/按其他键回主菜单】");
scanf("%d", &k);
if (k == 1)
search();
else
menu();
}
我就问一下,这种字节搜索,不考虑编码吗?