标题:图书管理系统 部分
只看楼主
安然o
Rank: 2
等 级:论坛游民
帖 子:14
专家分:10
注 册:2016-12-7
结帖率:80%
已结贴  问题点数:15 回复次数:10 
图书管理系统 部分
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct book
{
    char name[15];                              //书名
    char writer[5];                            //作者
    char num[10];                               //书号
    char press[15];                             //出版社
    char outtime[10];                           //出版日期
    char price[3];                             //图书价格
}book[50];
void main()
{
    void message();
    message();
}
void message()
{
    int i,k;
    FILE*fp;
    if((fp=fopen("text.txt","rb"))==NULL)
    {
            printf("没有图书信息,是否添加");
        printf("input 1 (添加)or 其他数字(退出菜单)\n");
            scanf("%d",&k);
        if(k==1)
            printf("dsklf");                                 //跳到添加菜单
        if(k!=1)
            printf("skdj");                              //跳到主菜单
    }
        for(i=0;i<6;i++)
        {
        fread(&book[i],sizeof(struct book),1,fp);
            printf("%s%s%s%s%s%s\n",book[i].name,book[i].writer,book[i].num,book[i].press,book[i].outtime,book[i].price);
        }
        fclose(fp);
        system("pause");
}



部分乱码   求解答
搜索更多相关主题的帖子: message 管理系统 include 出版社 price 
2016-12-28 19:25
安然o
Rank: 2
等 级:论坛游民
帖 子:14
专家分:10
注 册:2016-12-7
得分:0 
添加菜单 和主菜单不是我写  所以随便代替的
2016-12-28 19:38
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
先问一下,文件里面的东西是不是乱码,虽然是二进制格式,但应该里面的内容要对得上才对,可以先创建个r类文件,用来保存输入信息的,打开查看没有乱码后再改用rb类另外保存,文件方面问题可能是双关的,保存文件和代码问题都有可能~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-28 19:43
安然o
Rank: 2
等 级:论坛游民
帖 子:14
专家分:10
注 册:2016-12-7
得分:0 
回复 3楼 九转星河
大学计算机基础  陈建勋 000001 高等教育出版 2005年6月6日 30
语言大学        黄远林 000002 电子工业出版 2004年3月6日 25
计算机网络技术  宋文官 000003 中国铁道出版 2010年6月6日 28
数据库系统概述  萨师煊 000004 高等教育出版 2001年7月8日 40
计算机组成原理  白中英 000005 科学出版社   2008年6月1日 25
数据结构        刘大友 000006 清华大学出版 2009年1月6日 30
这个是文件夹里的东西
2016-12-28 19:59
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 4楼 安然o
我先去看看~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-28 20:17
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:0 
回复 4楼 安然o
没有改任何一个代码~---我再看看~~~乱码部分~~


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-28 20:20
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:5 
嗯,找到原因了,主要是文本数据没有读入换行符的问题(其实感觉那些文本内容感觉可能不是通过代码保存的,而是直接从别的地方copy的或者手写的),既然如此,我就将错就错,改成这样,虽然感觉改得有点另类,但效果却实现了~~~

程序代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct book
{
    char name[30];                              //书名
    char writer[30];                            //作者
    char num[30];                               //书号
    char press[30];                             //出版社
    char outtime[30];                           //出版日期
    char price[30];                             //图书价格
}book;
void main()
{
    void message();
    message();
}
void message()
{
    int i,k;
    FILE*fp;
    if((fp=fopen("abc.txt","rb"))==NULL)
    {
            printf("没有图书信息,是否添加");
        printf("input 1 (添加)or 其他数字(退出菜单)\n");
            scanf("%d",&k);
        if(k==1)
            printf("dsklf");                                 //跳到添加菜单
        if(k!=1)
            printf("skdj");                              //跳到主菜单
    }
      
       fread(&book,sizeof(struct book),6,fp);
       printf("%s\n",&book);
        fclose(fp);
        system("pause");

    return 0;
}


[此贴子已经被作者于2016-12-28 20:42编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-28 20:41
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:10 
那个是文本文件(也可能不规范),数据结构以文本数据结构也不相符。
文本文件读入book结构也不能按book定义的字符串直接输出,只能按文本以行读出再截取输出。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct book
{
    char name[16];                              //书名
    char writer[7];                            //作者
    char num[7];                               //书号
    char press[13];                             //出版社
    char outtime[13];                           //出版日期
    char price[2];                             //图书价格
} book[50];
void main()
{
    void message();
    message();
}
void message()
{
    int i,k;
    FILE*fp;
    if((fp=fopen("text.txt","rb"))==NULL)
    {
        printf("没有图书信息,是否添加");
        printf("input 1 (添加)or 其他数字(退出菜单)\n");
        scanf("%d",&k);
        if(k==1)
            printf("dsklf");                                 //跳到添加菜单
        if(k!=1)
            printf("skdj");                              //跳到主菜单
    }
    char buff[256];
    struct book *book = (struct book *)buff;
    while (fgets(buff, 256, fp) != NULL)
    {
        printf("%.*s ",16,book->name);
        printf("%.*s ", 7,book->writer);
        printf("%.*s ", 7,book->num);
        printf("%.*s ",13,book->press);
        printf("%.*s ",13,book->outtime);
        printf("%.*s ", 2,book->price);
        printf("\n");
    }
    fclose(fp);
    system("pause");
}
2016-12-28 21:07
安然o
Rank: 2
等 级:论坛游民
帖 子:14
专家分:10
注 册:2016-12-7
得分:0 
回复 7楼 九转星河
谢谢
2016-12-28 21:17
安然o
Rank: 2
等 级:论坛游民
帖 子:14
专家分:10
注 册:2016-12-7
得分:0 
回复 8楼 吹水佬
666哦   不过自学的 这一部分  自己也琢磨不懂  感觉好难啊
2016-12-28 21:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-473062-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.221675 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved