鱼C论坛

 找回密码
 立即注册
查看: 2286|回复: 1

如何实现从文件取出数据输出字符串中带空格

[复制链接]
发表于 2020-5-24 14:54:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如题,我写的这个程序在文件中的keyword如果出现了空格或者直接为空(只有一个回车的时候)程序不能正常运行,不知道怎么解决
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. struct book                                                //书籍信息的结构
  5. {       
  6.         int book_id;                               
  7.         char book_name[30];       //一个书的id、一个书名、5个关键字、3个作者、一个发布地、一个发布时间
  8.         char keyword1[30];
  9.         char keyword2[30];
  10.         char keyword3[30];
  11.         char keyword4[30];
  12.         char keyword5[30];
  13.         char author1[30];
  14.         char author2[30];
  15.         char author3[30];
  16.         char publisher[30];
  17.         char publish_time[30];
  18.         struct book *next;
  19. }*Book;

  20. struct book *data_book_input();        //将数据库数据导出到一个结构指针上

  21. void main()
  22. {
  23.         struct book *head;
  24.         head = data_book_input();                                        //head是头指针
  25.         printf("%d\n",head->book_id);                                //这里是测试用
  26.         printf("%s\n",head->book_name);
  27.         head = head->next;
  28.         printf("%d\n",head->book_id);
  29.         printf("%s\n",head->book_name);
  30. }

  31. struct book *data_book_input()                //将数据库数据导出到一个结构指针上
  32. {       
  33.         struct book *p,*head,*tail;
  34.         head = tail = NULL;
  35.         int book_id;
  36.         char book_name[30];
  37.         char keyword1[30];
  38.         char keyword2[30];
  39.         char keyword3[30];
  40.         char keyword4[30];
  41.         char keyword5[30];
  42.         char author1[30];
  43.         char author2[30];
  44.         char author3[30];
  45.         char publisher[30];
  46.         char publish_time[30];
  47.         FILE *f = NULL;
  48.         if((f=fopen("data_book.txt","r")) == NULL)
  49.         {
  50.                 printf("File is Error! No1\n");
  51.                 return NULL;
  52.         }
  53.         while(fscanf(f, "%d %s %s %s %s %s %s %s %s %s %s %s",
  54.                 &book_id,book_name,keyword1,keyword2,keyword3,keyword4,keyword5,
  55.                 author1,author2,author3,publisher,publish_time) != EOF)
  56.         {
  57.         if((p = (struct book *)malloc(sizeof(struct book)))==NULL)                //分配储存空间
  58.                 {       
  59.                         printf("Error!");
  60.                         return NULL;
  61.                 }
  62.                 p->book_id = book_id;                                        //导入数据
  63.                 strcpy(p->book_name , book_name);
  64.                 strcpy(p->keyword1 , keyword1);
  65.                 strcpy(p->keyword2 , keyword2);
  66.                 strcpy(p->keyword3 , keyword3);
  67.                 strcpy(p->keyword4 , keyword4);
  68.                 strcpy(p->keyword5 , keyword5);
  69.                 strcpy(p->author1 , author1);
  70.                 strcpy(p->author2 , author2);
  71.                 strcpy(p->author3 , author3);
  72.                 strcpy(p->publisher , publisher);
  73.                 strcpy(p->publish_time , publish_time);
  74.                 p->next = NULL;        //顺序建立链表
  75.                 if(head == NULL)
  76.             head = p;
  77.             else
  78.             tail->next = p;
  79.             tail = p;
  80.         }                        //链表头地址是head,最后的next是NULL
  81.         fclose(f);
  82.         return head;        //返回头指针
  83. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-25 10:51:50 | 显示全部楼层
怎么感觉要沉了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-13 14:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表