YYDS啊 2022-12-21 20:13 采纳率: 30%
浏览 294
已结题

C++出现问题:has no member named ''name‘

代码如下

#include <stdio.h>
#include <malloc.h>
#include <string.h>
struct Book
{
 int   num;            /*编号*/
  char  cla[10];          /*分类名*/
  char name[15];          /*书名*/
  char author[8];       /*作者名*/
  char  company[20];      /*出版单位*/
  int   count;            /*数量*/ 
  float price;        /*价格*/
};
 
 typedef struct Book DataType;
 typedef struct     LNode
{
  DataType data;
  struct LNode *next;
 }LinkList;
 LinkList *head;
 int R;
 
 void DispList(LinkList *head);
 LinkList*InitList()
 {
  head=(LinkList*)malloc(sizeof(LinkList));
  head->next=NULL;
  return head;
 }
 
 
void ReadFile()
{
 FILE*fp;
// int i=0;
 LinkList Books,*s,*last;
 last=head;
 if((fp=fopen("jk62107_08_bk.txt","r+"))==NULL)
 {
  printf("找不到此文件再试试!!!!\n");
  return;
 }
 fscanf(fp,"%s\t %s\t %s %s %s %s %s\n",&Books.data.num,&Books.data.cla,&Books.data.name,&Books.data.author,&Books.data.company,&Books.data.count,&Books.data.price);
 printf("\n\n 编号 分类\t  书名\t     \t 作者       \t出版社   \t数量   \t\t价格\n");
 while(!feof(fp))
 {
  s=(LinkList*)malloc(sizeof(LinkList));
  fscanf(fp,"%d %s %s %s %s %d %f\n",&s->data.num,&s->data.cla,&s->data.name,&s->data.author,&s->data.company,&s->data.count,&s->data.price);
  printf(" %d   %s\t %s\t %s        %s\t  %d\t  \t%6.2f\n",s->data.num,s->data.cla,s->data.name,s->data.author,s->data.company,s->data.count,s->data.price);
  R++;
  s->next=NULL;
  s->next=s;
  last=s;
 }
 printf("\n\n文件读取成功\n\n");
 printf("%d\n",R);
 fclose(fp);
 }

void Searchname()//按书名查找函数
{
  int flag=0;//标记变量的初值
  char name[15];
 LinkList Books,*s,*p;
p=head;
  printf ("\n请输入需要查询的书名:");
  scanf("%s",name);
  printf("\n\t\t*************以下是您查找的信息***************");
 p=head;
  while(p!=NULL);
  {
    if(strcmp(p->name,name)==0)//查找符合的图书
    {
     printf("\n\t编号:%-10s",p->num);
     printf("\n\t书名:%-20s",p->name);
     printf("\n\t作者名:%-20s",p->author);
     printf("\n\t分类名:%-10s",p->cla);
     printf("\n\t出版单位:%-20s",p->company);
     printf("\n\t数量:%-20s",p->count);
     printf("\n\t价格:¥%-10s",p->price);
     flag=1;//找到标记变量设为1
     p=p->next;//指针走到下一个节点
       s->next=NULL;
  s->next=s;
  p=s;
    }
    else
    p=p->next;
  }
  if(flag==0)
  printf("\n\t\t没有相同书名纪录");
  printf("\n\t\t请按任意键返回主菜单");
  getchar();
}
}

 int main()
 {
     ReadFile();
     return 0;
 } 

编译器提示

img

  • 写回答

1条回答 默认 最新

  • 浪客 2022-12-21 20:21
    关注

    if(strcmp(p->data.name,name)==0)//查找符合的图书 少了data,下同

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

报告相同问题?

问题事件

  • 系统已结题 12月29日
  • 已采纳回答 12月21日
  • 创建了问题 12月21日

悬赏问题

  • ¥15 srs-sip外部服务 webrtc支持H265格式
  • ¥15 在使用abaqus软件中,继承到assembly里的surfaces怎么使用python批量调动
  • ¥15 大一C语言期末考试,求帮助🙏🙏
  • ¥15 ch340驱动未分配COM
  • ¥15 Converting circular structure to JSON
  • ¥30 Hyper-v虚拟机相关问题,求解答。
  • ¥15 TSM320F2808PZA芯片 Bootloader
  • ¥45 谷歌浏览器出现开发者工具无法显示已创建的,但您可以调试已部署的代码。 状态代码 404, net::ERR HTTP RESPONSE CODE FAILURE
  • ¥15 如何解决蓝牙通话音频突发失真问题
  • ¥15 安装opengauss数据库报错