当前位置:  技术问答>linux和unix

Linux C新手碰到总线错误求解!!

    来源: 互联网  发布时间:2017-04-22

    本文导语:  #include  #include  #include  #include  #include  #include  #include    int n = 0;//共录入了多少本书的信息 int count;//记录条数   //书名  出版社  价格  存储量  作者 typedef struct  {     char name[20];     char pub[20];     float pr...


#include 
#include 
#include 
#include 
#include 
#include 
#include 
 
int n = 0;//共录入了多少本书的信息
int count;//记录条数
 
//书名  出版社  价格  存储量  作者
typedef struct 
{
    char name[20];
    char pub[20];
    float price;
    int stock;
    char author[20];
}book;
 
void drawUI()
{
    char *heads  = "图书信息管理";
    char *name      = "书  名[           ]";
    char *pub      = "出版社[           ]";
    char *price  = "价  格[           ]";
    char *stock  = "库存量[           ]";
    char *author = "作  者[           ]";
    char *keepOn = "继续输入吗?y/n______";
     
    box(stdscr,0,0);
    attron(A_BOLD);
    mvaddstr(3,(COLS-strlen(heads))/2,heads);
    mvhline(4,(COLS-strlen(heads))/2,0,strlen(heads));
    attroff(A_BOLD);
    mvaddstr(8,(COLS-strlen(name))/2,name);
    mvaddstr(10,(COLS-strlen(pub))/2,pub);
    mvaddstr(12,(COLS-strlen(price))/2,price);
    mvaddstr(14,(COLS-strlen(stock))/2,stock);
    mvaddstr(16,(COLS-strlen(author))/2,author);
     
    mvaddstr(20, COLS/2-10, keepOn);
     
    refresh();   
}
void dealInput(book* books)
{
    int ch;
    int i = 0;
    while(1)
    {
        mvaddstr(8,  COLS / 2 - 3, "");
        //输入书名一回车就报总线错误了,这是为什么????
        mvscanw (8,  COLS / 2 - 3, books[i].name);
        mvaddstr(10, COLS / 2 - 3, "");
        mvscanw (10, COLS / 2 - 3, books[i].pub);
        mvaddstr(12, COLS / 2 - 3, "");
        mvscanw (12, COLS / 2 - 3, (char*)&(books[i].price));
        mvaddstr(14, COLS / 2 - 3, "");
        mvscanw (14, COLS / 2 - 3, (char*)&(books[i].stock));
        mvaddstr(16, COLS / 2 - 3, "");
        mvscanw (16, COLS / 2 - 3, books[i].author);   
         
        i++;
        count++;
         
        ch = mvgetch(20, COLS/2+5);
        if('n' == (char)ch)
        {
            n = i;
            break;
        }   
                             
        refresh();
    }
}
int main()
{
    int fd;   
    book* s = NULL;//文件在虚拟内存的映射首地址
    struct stat st;
    int size;//文件大小
    int i;
    //1.打开文件
    fd = open("book.dat", O_RDWR|O_CREAT|O_EXCL, 0666);
    if(fd == -1)
    {
        fd = open("book.dat", O_RDWR);
        if(fd == -1) printf("::%mn"), exit(-1);
    }
    //2.得到文件大小,文件记录条数
    fstat(fd, &st);
    size = st.st_size;
    count = size/sizeof(book);
    //4.映射到一个虚拟的地址,假设一次最多允许录入100本书的信息
    s = (book*)mmap(0, size+100*sizeof(book), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);               
    //5.把数据写入虚拟地址
    initscr();
     
    drawUI();
 
    dealInput(s);
    //3.文件大小改变只要在munmap之前调用都有效
    //实际录入了n本书的信息,所以文件大小只要扩大n个book这么多
    ftruncate(fd,size + n*sizeof(book));
     
    endwin();
     
    //6.卸载虚拟地址
    munmap(s, 100*sizeof(book)+size);
    //7.关闭文件
    close(fd);   
     
    return 0;
}

|
mvscanw不会用吗?和scanf一样

    
 
 

您可能感兴趣的文章:

  • 求解windows下硬盘安装linux如何用linux引导
  • Linux Shell编程从初学到精通 第四章课后习题2 求解
  • linux命令求解释....
  • 求助linux下mysql 求解!
  • 关于linux shell的一个不明白的地方。求解
  • 高分求解:win2000访问linux
  • linux 内核一条语句求解
  • 小弟求解LINUX下SHELL编程问题
  • LINUX如何取进程信息,求解!!!
  • linux切换用户遇到的问题,求解!
  • linux上的媒体播放(高分在线求解)
  • 求解linux的网络设置
  • vmware linux分区问题--求解
  • 关于linux分区的问题~~~~大伙给个主意~~~40分求解
  • 急急急!!!高分求解linux 2.6 内核安装网卡的问题
  • 求解此linux命令意思~~~!!!!!!!
  • linux grep 正则表达式 求解释
  • 菜鸟求解linux 信号问题
  • 小弟没写过shell,求解 linux shell 命令
  • 秒爆,求教育,求解释,linux 的select()函数
  • linux下利用mmap实现共享内存,出现总线错误
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 安linux时碰到的麻烦!
  • 装linux碰到1024柱面的限制怎么办
  • 新手使用LINUX碰到的几个问题,望请指教!
  • 第一次装LINUX就碰到麻烦了
  • 小弟我刚装了个linux7.2,碰到一个小问题请指教!
  • 有谁在linux串口下用ESCPOS指令控制打印机打印,碰到问题,请赐教
  • vmware下安装的linux网络设置碰到问题了
  • 请问:linux下有没有可以要开.pdf文件的软件或者工具啊,现在碰到很多.pdf文件根本不能看啊
  • 在linux在安装CVS碰到个问题想请教下
  • 求救:初学redhat linux碰到的问题
  • 急:我安装red hat linux,碰到小问题,各位大虾快帮帮我吧(在线等待。。。)
  • linux开发中经常碰到的两个小问题求助
  • 为什么我在安装linux9的时候,机器检测硬件的时候,出现“超频保护中”的提示,请问大家有没有碰到此类的问题
  • 我碰到的几个LINUX的问题。
  • 关于linux环境下使用eclipse碰到的引用静态链接库的问题。。。。
  • 《unix/linux编程实践教程》中碰到的关于线程的问题
  • 安装redhat9.0 linux过程中分区碰到有关挂载点的问题.
  • 在xp上的VMware中 用虚拟光驱 安装Linux FC4时 碰到郁闷 问题?各位大侠99俺...
  • linux架设subversion(svn)碰到的问题
  • 安装一个Minimal Linux System时碰到的问题,请高手指点。
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • linux命令大全详细分类介绍及常用linux命令文档手册下载


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,