精华内容
下载资源
问答
  • } void fread_fp(struct node* head)//读取数据 { struct node* p =head; FILE* fp = NULL; fopen_s(&fp, "dong6.dat", "wb"); if (!fp) { printf("打开文件失败!\n"); return; } else { while (feof(fp) == 0) { ...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    #define _CRT_SECURE_NO_WARNINGS

    #include

    #include

    #include

    struct node* list();

    struct node* head();

    struct Node* colour_list();

    struct node* output(struct node* p);

    struct node

    {

    char contractnumber[20];//合同号

    char name[20];//产品名称

    int quantity;//数量

    struct Node* colour;//颜色

    struct node* next;

    };

    struct Node

    {

    char colour[20];//颜色

    int number;//数量

    struct Node* next;

    };

    struct node* list()//申请新节点

    {

    struct node* p = (struct node*)malloc(sizeof(struct node));

    p->next = NULL;

    return p;

    }

    struct node* head()//头节点

    {

    struct node* p = list();

    return p;

    }

    struct Node* colour_list()//申请颜色节点

    {

    struct Node* p = (struct Node*)malloc(sizeof(struct Node));

    p->next = NULL;

    return p;

    }

    void fwrite()//保存数据

    { FILE* fp = NULL;

    fopen_s(&fp, "dong6.dat", "wb+");

    if (!fp)

    {

    printf("建立文件失败!\n");

    return;

    }

    fclose(fp);

    }

    void fwrite_fp(struct node* head)//保存数据

    {

    struct node* p = head;

    FILE* fp = NULL;

    fopen_s(&fp, "dong6.dat", "ab+");

    if (!fp)

    {

    printf("打开文件失败!\n");

    return;

    }

    else

    {

    if (p == NULL)

    {

    printf("没有数据无法保存!\n");

    return;

    }

    else

    {

    while (p)

    {

    struct Node* p1 = p->colour;

    while (p1)

    {

    fwrite(p1, sizeof(p1), 1, fp);

    p1 = p1->next;

    }

    fwrite(p, sizeof(p), 1, fp);

    p = p->next;

    }

    }

    }

    fclose(fp);

    }

    void fread_fp(struct node* head)//读取数据

    {

    struct node* p =head;

    FILE* fp = NULL;

    fopen_s(&fp, "dong6.dat", "wb");

    if (!fp)

    {

    printf("打开文件失败!\n");

    return;

    }

    else

    {

    while (feof(fp) == 0)

    {

    struct node* newp = list();

    struct Node* p1 = colour_list();

    newp->colour= p1;

    while (p->next != NULL)

    {

    p = p->next;

    }

    fread(newp,sizeof(newp),1,fp);

    while (p1)

    {

    fread(p1, sizeof(p1), 1, fp);

    p1 = p1->next;

    }

    p->next = newp; } }

    fclose(fp);

    }

    void input(struct node* p)

    {

    char c = 'c';

    struct Node* p1 = colour_list();//颜色头节点

    p->colour = p1;//颜色头节点赋值

    printf("请输入合同号:\n");

    scanf_s("%s", &p->contractnumber, 20);

    printf("请输入产品名称:\n");

    scanf_s("%s", &p->name, 20);

    printf("请输入合同数量:\n");

    scanf_s("%d", &p->quantity);

    while (1)

    {

    struct Node* p2 = colour_list();//颜色申请新节点

    while (p1->next != NULL)

    {

    p1 = p1->next;

    }

    printf("请输入颜色:\n");

    scanf_s("%s", &p2->colour, 20);

    printf("请输入%s色数量:\n", p2->colour);

    scanf_s("%d", &p2->number); p1->next = p2;

    printf("是否有其他颜色?(y/n)\n");

    scanf_s(" %c", &c, 1); if (c == 'n' || c != 'y')

    {

    c = 'c';

    break;

    }

    }

    }

    struct node* output(struct node* p)//输出单个链表

    {

    struct Node* p1;

    printf("合同号:%s\t产品名称:%s\t数量:%d\n", p->contractnumber, p->name, p->quantity);

    p1 = p->colour->next;

    while (p1)

    {

    int i = 0;

    printf("%s\t%d\t", p1->colour, p1->number);

    i++;

    if (i % 2 == 0)

    {

    printf("\n");

    }

    p1 = p1->next;

    }

    printf("\n");

    return 0;

    }

    struct node* output_list(struct node* head)//输出链表

    {

    struct node* p = head->next;

    while (p)

    {

    output(p);

    p = p->next;

    }

    return 0;

    }

    struct node* colorinsert_w(struct node* head)//结尾插入

    {

    struct node* p=head; while (1)

    {

    char c = 'c';

    struct node* newp = list(); if (p->next != NULL)

    {

    while (p->next != NULL)

    {

    p = p->next;

    }

    }

    input(newp);

    p->next = newp;

    printf("是否有其他合同?(y/n)\n");

    scanf_s(" %c", &c, 1);

    if (c == 'n' || c != 'y')

    {

    c = 'c';

    break;

    }

    }

    return p;

    }int main()

    {

    struct node*p= head();

    colorinsert_w(p);

    fwrite_fp(p);

    fread_fp(p);

    output_list(p);

    return 0;

    }

    展开全文
  • 满意答案sdfsdwsw推荐于 2016.01.20采纳率:47%等级:10已帮助:1169人|#include#includestructdate{charstr[3];...//链表长度为lenstructdate*create_link(intlen){structdate*head;structdate*tmp;inti;hea...

    满意答案

    02ae427d08e371d7e90d5b995e828d6d.png

    sdfsdwsw

    推荐于 2016.01.20

    02ae427d08e371d7e90d5b995e828d6d.png

    采纳率:47%    等级:10

    已帮助:1169人

    |#include

    #include

    struct date

    {

    char str[3];

    struct date *next;

    };

    //链表长度为len

    struct date *create_link(int len)

    {

    struct date *head;

    struct date *tmp;

    int i;

    head = malloc(sizeof(struct date));

    tmp = head;

    for(i = 1; i 

    {

    head ->next = malloc(sizeof(struct date));

    head = head ->next;

    }

    head ->next = NULL;

    return tmp;

    }

    //读文件到链表

    void read_file_to_link(struct date *head,FILE *fp)

    {

    if(head == NULL || fp == NULL)

    {

    fprintf(stderr,"null pointer");

    exit(EXIT_FAILURE);

    }

    do

    {

    fscanf(fp,"%3s",head ->str);

    head = head ->next;

    }while(head != NULL);

    }

    //显示链表中的内容

    void print_link(struct date *head)

    {

    if(head == NULL)

    {

    fprintf(stderr,"null pointer");

    exit(EXIT_FAILURE);

    }

    do

    {

    printf("%s",head ->str);

    head = head ->next;

    }while(head != NULL);

    }

    int main()

    {

    FILE *fp;

    int len; //链表长度

    scanf("%d",&len);

    fp = fopen("a.txt","r");

    struct date *head;

    head = create_link(len);

    read_file_to_link(head,fp);

    print_link(head);

    exit(EXIT_SUCCESS);

    }

    01分享举报

    展开全文
  • 为什么输入数据后再读取链表,链表最后一个节点的数据总是会重复输出两次代码:#include#include#define LEN sizeof(struct student)struct student{char name[20];long num;float chinese;float math;float english;...

    为什么输入数据后再读取链表,链表最后一个节点的数据总是会重复输出两次代码:#include#include#define LEN sizeof(struct student)struct student{char name[20];long num;float chinese;float math;float english;struct student *next;};struct student *head;

    main(){struct student *p,*q;p=(struct student*)malloc(LEN); head=p;head->next=NULL;q=(struct student*)malloc(LEN);FILE *f1;if((f1=fopen("无.dat","wb"))==NULL){printf("文件打开失败\n");exit(1);}printf("\n\t1:新建学生成绩表\n");printf("请在下面依次输入姓名学号语文数学英语\n");scanf("%s%ld%f%f%f",&q->name,&q->num,&q->chinese,&q->math,&q->english);while(q->name!=0&&q->num!=0&&q->chinese!=0&&q->math!=0&&q->english!=0){p->next=q;p=q;q=(struct student*)malloc(LEN);printf("请在下面依次输入学号姓名语文数学英语\n");scanf("%s%ld%f%f%f",&q->name,&q->num,&q->chinese,&q->math,&q->english);fwrite(p,sizeof(struct student),1,f1)!=1;}p->next=NULL;

    if(fclose(f1)){printf("文件异常关闭");exit(1);}

    if((f1=fopen("无.dat","rb"))==NULL){printf("文件打开失败\n");exit(1);}

    p=head->next;while(!feof(f1)){fread(p,sizeof(struct student),1,f1);printf("%s %ld %f %f %f\n",p->name,p->num,p->chinese,p->math,p->english);}if(fclose(f1)){printf("文件异常关闭");exit(1);}}

    展开全文
  • c语言链表数据存入文件读取文件

    万次阅读 多人点赞 2017-05-07 15:49:24
    c语言链表数据存入文件读取文件

    近快一年没有接触c语言了,今天学妹问我了链表数据存如文件和读取文件到链表怎么实现,现在搞开发很少用文件,都是用数据库,在这儿我还是写一下简单的文件读取链表的操作。在c语言中,创建单链表需要使用到malloc函数动态申请内存;文件的读写需要首先使用fopen函数打开文件,然后使用fscanf,fgetc, fgets,fprintf,fputc,fputs等函数读写函数,最后读写完毕要使用fclose函数关闭函数。


    下面的源程序展示了关于单链表如何从文件中读取数据和往文件里存入数据。

    typedef struct node {
        int data;
        struct node *next;       
    }node;
      
      
    //从文件中读取数据存入链表 
    node *createlink()
    {
        node *head =(node*)malloc(sizeof(node));
        int t;
        node *p;
        node *q;
        p=q=head;
        FILE * r= fopen("input.txt","r");
        if(r==NULL)
        {
            printf("打开文件失败!");
            return NULL; 
        }
         
        while(fscanf(r,"%d",&t)!=EOF)
        {  
           q= (node*)malloc(sizeof(node));
           q->data=t;
           p->next=q;
           p=q;
        }
        p->next=NULL;
        return head;
    }
      
     
    //输出链表到屏幕和文件output.txt 
    void outlink(node *head)
    {
       node *p=head->next;
       FILE *w =fopen("output.txt","w");
       if(w==NULL)
       {
           printf("打开文件失败!");
           return
       }
       while(p)
       {
           //输出链表节点数据到屏幕 
           printf("%d ",p->data);
           //输出链表节点数据到文件output.txt 
           fprintf(w,"%d ",p->data);
           p=p->next;        
       }     
       printf("\n");
       fprintf(w,"\n");
       fclose(w);
       return;
    }
      
    int main()
    {
        node *head;
        int n,m;
        head=createlink();
        outlink(head);
        system("pause");
        return 0;
    }

    展开全文
  • /*创建链表*/ student *delete(student *h); /*删除记录*/ void print(student *h); /* 显示所有记录*/ void search(student *h); /*查找*/ void save(student *h); /*保存*/ student *load(); /*读入记录*/ void ...
  • 本文内容是关于:C语言 链表详解,c语言链表教程。 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer)。 单链表(单向...
  • //创建文件 FILE*fp; fp = fopen("storehouse.txt","w"); fwrite(); fclose(fp); int x; int n;//初次输入的大小 Node *L; if(!(L=(Node *)malloc(sizeof(Node)))) //分配空间 { printf("\n"); exit(1)...
  • C语言结合文件操作的链表实例一、 功能设计一个学生成绩管理系统,要求:录入学生成绩查询学生成绩删除学生成绩修改学生成绩二、 ADT接口/* 初始化一个链表 */void InitializeList(List * plist);/* 确定链表是否为...
  • 当前位置:我的异常网» C语言»链表透过文件读写计算两个多项式之积链表透过文件读写计算两个多项式之积www.myexceptions.net网友分享于:2014-03-24浏览:10次链表通过文件读写计算两个多项式之积写了这个程序,...
  • C语言链表读取问题

    2012-06-03 14:49:26
    如何把文件中的链表读取出来 像 typedef struct m { int a; char b[10]; struct m *next; }M; M *p,*head,*t; 读出来之后 建立head是头的链表 文件是"D:\aaa" 存入时是 p=head; while(p !=NULL) {...
  • 功能:添加,删除,查找,全部输出。 添加时自动保存到文件, 查找、全部输出时从文件读取; 复制粘贴即可运行!绝对好用
  • c语言链表

    2021-01-13 00:20:45
    c语言暂时更新完毕 链表实现 链表改进及其函数 补充知识volatile关键字 链表实现 #include <stdio.h> #include "node.h" #include <stdlib.h> //node头文件内容: //typedef struct _node{ // ...
  • C语言 链表

    2014-12-12 08:51:00
    C语言 链表 原文:C语言 链表 最近在复习数据结构,想把数据结构里面涉及的都自己实现一下,完全是用C语言实现的。 自己编写的不是很好,大家可以参考,有错误希望帮忙指正,现在正处于编写...
  • nmea-0183协议解析C语言链表实现,读取一个GPStxt对其中的nmea协议进行解析筛选
  • 请问C语言如何把链表存入文件,从文件读取链表Consumer*read_list(){FILE*fp;if((fp=fopen("CONSUMER.dat","rb"))==NULL){printf("无法读取CONSUMER.dat\n");returnNULL;}intsign;Consumer*s,*p,*head;head=...
  • 链表的写入文件 /*====================存储彩票信息========================*/ /*功能:将彩票的全部数据写入文件 *参数:彩票数据链表 *返回值:布尔类型,读出成功返回TRUE,否则返回FALSE */ boolean ...
  • 点餐系统,用简单的c语言链表实现。通过在主函数循环调用各个函数,从而实现对链表的连续操作,最终实现链表的新建、打印、查找、保存、读取、更新、删除等等操作,进而管理订单与用户信息,并保存用户的各种信息,...
  • 我用fwrite写到文件,但是用fread读取的时候第一行总是有一段乱码 对链表读写不是很懂 也是照着网上自己改的 怎样避免出现乱码?求指点[img=http://img.my.csdn.net/uploads/201211/25/1353826485_7682.jpg][/img...
  • C语言链表操作功能实现详解心得
  • 以前写过双向链表交换任意结点的程序,后来写了个双向链表排序的程序,没用边输入边排序的思想,是输入完毕后我按照选择法排序的思想对链表的结点进行交换.是地址交换.#include <stdio.h>typedef strUCt Link/*...
  • //读取文件时跳过第一行的表头 while (1) { S studat; if (fscanf(fp, "%s\t%d\t%d\t%d\t%d\t%d\t%d\n", studat.name, &studat.num, &studat.age, &studat.math, &studat.english, &studat.physics, &studat....
  • C语言链表基础入门

    2020-08-25 16:57:15
    一.什么是链表 ...但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。 二.如何建立一个链表 首节点:存放第一个有效数据的节点,首节点没有前驱节点 头节点:在
  • c语言链表的使用

    2020-04-25 19:46:02
    介绍了链表与数组的应用区别与比较,并详细给出了链表使用的一些常用操作函数。
  • C语言链表求解多项式乘法问题 解决多项式乘法问题最容易想到的就是将乘法运算转换为加法运算。从p1的第一项开始,依此乘以p2的每一项,合并同类项后放入结果多项式中。然而项数太多时,合并同类项的过程过于复杂……...
  • C语言利用链表文件实现登录注册

    千次阅读 多人点赞 2018-09-15 08:59:22
    C语言利用文件系统实现简单的用户登录和注册功能 版本二:利用链表 此版本使用的链表,第一个版本使用的是数组 数组版本连接 这里我使用的线性链表,一定要注意在判断语句或赋值语句中不可将...
  • 课程设计:c语言链表

    2020-06-05 19:47:58
    目录 (一)需求分析: 3 (二)概要设计: 3 ...10)实现链表文件读取的功能函数 10 11)实现链表文件存储的功能函数。 11 12)实现菜单选择的功能函数。 11 (四)系统演示及使用说明 12 1).菜单选项 12 2
  • c语言 链表合并,排序

    千次阅读 2019-08-15 10:54:46
    已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。 输入: 第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和...
  • C语言链表各类操作详解

    千次阅读 2019-01-23 23:17:09
    1.单链表的读取 获取链表第i个数据的算法思路: 声明一个指针p指向链表的第一个结点,初始化j从1开始; 当j&amp;lt; i 时,遍历链表,让p的指针向后移动,不断指向下一结点,j累加1; 若到链表末尾p为空,说明...
  • C语言做的字典程序,中使用链表和结构体,涉及的知识点有结构体,指针,链表的添加,遍历,删除,释放,文件的打开,读取,关闭等。使用Xcode写的代码,可以在Xcode4.2中直接运行,但是需要更改字典数据文件的路径...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,909
精华内容 11,163
关键字:

c语言链表读取文件

c语言 订阅