精华内容
下载资源
问答
  • 链表读写文件

    千次阅读 2020-04-16 19:24:33
    链表读写文件 将学生信息先以链表的形式存储在内存中,然后再写入到文件里,需要读取学生信息时,将稳健的内容读取链表里,然后在屏幕上显示。 // ConsoleApplication1.cpp: 定义控制台应用程序的入口点。 // #...

    用链表读写文件

    将学生信息先以链表的形式存储在内存中,然后再写入到文件里,需要读取学生信息时,将文件的内容读取到链表里,然后在屏幕上显示。

    // ConsoleApplication1.cpp: 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    
    typedef struct student
    {
    	int num;
    	char name[11];
    	student *next;
    }STU_T;
    
    student *head, *tail;//头尾节点
    ifstream inFile;
    ofstream outFile;
    void input();
    void save();
    void search();
    
    int main(int argc, char *argv[])
    {
    	head = NULL;
    	tail = NULL;
    	input();
    	save();
    	search();
    	system("pause");
    	return 0;
    }
    
    void input()
    {
    	student *q;
    	q = (student *)malloc(sizeof(student));
    	cin >> q->num;
    	while (q->num != 0)//按0结束
    	{
    		cin >> q->name; 
    		if (head == NULL) 
    		{
    			head = q;
    			head->next = NULL;
    		}
    		if (tail != NULL)
    		{
    			tail->next = q;
    		}
    		tail = q;
    		tail->next = NULL;
    		q = (student *)malloc(sizeof(student));
    		cin >> q->num;
    	}
    }
    
    
    void save()
    {
    	student *q;
    	outFile.open("output.txt");
    	for (q = head; q != NULL; q = q->next)
    		outFile << q->num <<' '<< q->name << endl;
    	outFile.close();
    }
    
    void search()
    {
    	student *q;
    	q = (student *)malloc(sizeof(student));
    	int num = 0;
    	while (1)
    	{
    		cout << "请输入学号" << endl;
    		cin >> num;
    		inFile.open("output.txt");
    		while (! inFile.eof())
    		{
    			inFile >> q->num >> q->name;
    			if (q->num == num)
    			{
    				cout << q->name << endl;
    				break;
    			}
    		}
    		inFile.close();
    	}
    }
    
    
    
    展开全文
  • 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;
    }

    展开全文
  • 读取时总是读取不了TXT文件的最后一行内容,而且运行到最后程序还会崩溃,这是怎么回事呢? TXT文件内容如下: 1 老王 50 2 小李 65 3 大刘 98 4 天天 10 代码如下: #include #include #include using namespace ...
  • c语言数据从链表写入到文件和从文件读取链表

    千次阅读 多人点赞 2020-03-07 14:03:28
    想要实现c语言数据从链表写入到文件和从文件读取链表这个功能必须 先得了解一些关于文件操作的一些函数 fopen() fclose() fprintf() fscanf() fread() fwrite() 这些都会再我的另外一篇博客中提到 这个代码仅仅是...

    简单的一个代码

    • 想要实现c语言数据从链表写入到文件和从文件读取到链表这个功能必须
    • 先得了解一些关于文件操作的一些函数
    • fopen() fclose() fprintf() fscanf() fread() fwrite()
      这些都会再我的另外一篇博客中提到
    • 这个代码仅仅是一个示例,重要为了实现上面的功能
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    typedef struct W {
       int data;
       struct W* next;
    }W;
    
    W* add(W*h) {//创建一个链表,并返回头节点
       h = (W*)malloc(sizeof(W));
       W* p, * q;
       p = h;
       for (int i = 0;i < 2;i++) {
           q = (W*)malloc(sizeof(W));
           printf("加数\n");
           q->data = i;
           
           p->next = q;//尾插法核心三步
           q->next = NULL;
           p = q;
       }
       printf("结束\n");   
        return h;
    }
    void save(W* h) {//创建并将链表信息存入文件
       FILE* fp;
       W* p = h->next;
       if ((fp = fopen("D://www.txt", "w+")) == NULL) {
           printf("打开失败");
           exit(-1);
       }
       else
       {
       	printf("打开save成功\n"); 
       }
       for (int i = 0;i < 2;i++) {
           fprintf(fp, "%d\n", p->data);
           p = p->next;
       }
       printf("成功\n");
       fclose(fp);
      
    }
    void load() {//打开并读取文件内容并显示
       FILE* fp;
       int n=2;
       if (fp == fopen("D://www.txt", "r") == NULL) {
           printf("打开失败");
           exit(-1);
       }
       else{
       	printf("load成功\n");
       }
       W* h1, * p1, * q1;
       h1 = (W*)malloc(sizeof(W));
       p1 = h1;
       while(n) {
           q1 = (W*)malloc(sizeof(W));
           fscanf(fp, "%d\n", &q1->data);
           printf("%d", q1->data);
           
           p1->next = q1;//尾插
           q1->next = NULL;
           p1 = q1;
           n--;
       }
       printf("load结束");
       fclose(fp); 
    
    }
    int main() {
       
       W* h;
       
          h= add(h);
           save(h);
           load();
             
       return 0;
    }
    

    dev运行结果
    代码运行图
    成功创建并存入文件
    在这里插入图片描述

    展开全文
  • if ((fp = fopen("people.txt","r")) == NULL)//以可读写方式打开文件,如果没有则建立一个 { printf ("文件打开失败!\n"); exit (1); } contacts *head, *q, *p, *h; head = NULL; p = (contacts*)...
  • 关于链表的C++文件读写

    千次阅读 2017-05-17 18:32:37
    关于链表的C++文件读写 出处http://blog.csdn.net/u013815546/article/details/42110269 标签: c++数据结构 课程设计时需要构建一个商品表,我使用的是一个链表来存储一个个商品,那么在过程...

    关于链表的C++文件读写

    出处http://blog.csdn.net/u013815546/article/details/42110269
    标签: c++数据结构

    课程设计时需要构建一个商品表,我使用的是一个链表来存储一个个商品,那么在过程中需要将信息存储进文件,再从文件读取到内存的链表中。

    思路不是很难,但是还是卡在了一些细节上。

    细节1:存储1~n个商品时,在最后一个商品及n商品时,在文件末尾会多一个换行符,这个换行符会影响到文件的读写操作。

    细节2:链表的每个商品信息在读取时都需要动态分配内存,以及一些指针的操作问题。(平时只注重于算法的学习了,对于链表不熟悉吃的亏,在此感谢队友jameslee的Debug)

    细节3:对于类的存储,我想到的是用二进制而不是一般存储,因为二进制是按照字节来存储的,方便文件读写,当然文件存储信息是一个过渡,学完数据库就方便了。

    文件写入商品信息:

    1. #include <iostream.h>    
    2. #include <fstream.h>    
    3. #include <stdlib.h>  
    4. #include <cstring>  
    5. class Goods  
    6. {  
    7. protected:  
    8.     char goods_name[50]; //商品名称  
    9.     int goods_number; //商品代码  
    10.     char person_name[30]; //经办人  
    11.     int price; //进货价  
    12.     int amount; //库存量  
    13.     Goods *next;//定义指向类Goods的指针变量next  
    14. public:  
    15.     Goods(int goods_number=0,char*goods_name="null",char*person_name="null",int price=0,int amount=0)//定义构造函数  
    16.     {  
    17.         this->goods_number=goods_number;  
    18.         strcpy(this->goods_name,goods_name);  
    19.         strcpy(this->person_name,person_name);  
    20.         this->price=price;  
    21.         this->amount=amount;  
    22.     }  
    23.     void ShowData()//定义输出函数  
    24.     {  
    25.         cout<<"goods_number:"<<goods_number<<" goods_name:"<<goods_name<<" person_name:"<<person_name<<" price:"<<price<<" amount:"<<amount<<endl;  
    26.     }  
    27. };  
    28. int main ()   
    29. {  
    30.     ofstream out("data.txt",ios::app|ios::binary);  
    31.     Goods x(1,"name1","das",1,1);  
    32.     Goods y(2,"name2","das2",2,2);  
    33.     Goods z(3,"name3","das3",3,3);  
    34.     if (out.is_open())   
    35.     {  
    36.         out.write((char*)&x,sizeof(x));  
    37.         out.write((char*)&y,sizeof(y));  
    38.         out.write((char*)&z,sizeof(z));  
    39.     }  
    40.     return 0;  
    41. }  
    #include <iostream.h>  
    #include <fstream.h>  
    #include <stdlib.h>
    #include <cstring>
    class Goods
    {
    protected:
    	char goods_name[50]; //商品名称
    	int goods_number; //商品代码
    	char person_name[30]; //经办人
    	int price; //进货价
    	int amount; //库存量
    	Goods *next;//定义指向类Goods的指针变量next
    public:
    	Goods(int goods_number=0,char*goods_name="null",char*person_name="null",int price=0,int amount=0)//定义构造函数
    	{
    		this->goods_number=goods_number;
    		strcpy(this->goods_name,goods_name);
    		strcpy(this->person_name,person_name);
    		this->price=price;
    		this->amount=amount;
    	}
    	void ShowData()//定义输出函数
    	{
    		cout<<"goods_number:"<<goods_number<<" goods_name:"<<goods_name<<" person_name:"<<person_name<<" price:"<<price<<" amount:"<<amount<<endl;
    	}
    };
    int main () 
    {
        ofstream out("data.txt",ios::app|ios::binary);
    	Goods x(1,"name1","das",1,1);
    	Goods y(2,"name2","das2",2,2);
    	Goods z(3,"name3","das3",3,3);
        if (out.is_open()) 
        {
    		out.write((char*)&x,sizeof(x));
    		out.write((char*)&y,sizeof(y));
    		out.write((char*)&z,sizeof(z));
        }
        return 0;
    }
    文件读入内存的链表中:

    1. #include <iostream.h>    
    2. #include <fstream.h>    
    3. #include <stdlib.h>  
    4. #include <cstring>  
    5. class Goods  
    6. {  
    7.     public:  
    8.     char goods_name[50]; //商品名称  
    9.     int goods_number; //商品代码  
    10.     char person_name[30]; //经办人  
    11.     int price; //进货价  
    12.     int amount; //库存量  
    13.     Goods *next;//定义指向类Goods的指针变量next  
    14.     Goods(int goods_number=0,char*goods_name="null",char*person_name="null",int price=0,int amount=0)//定义构造函数  
    15.     {  
    16.         this->goods_number=goods_number;  
    17.         strcpy(this->goods_name,goods_name);  
    18.         strcpy(this->person_name,person_name);  
    19.         this->price=price;  
    20.         this->amount=amount;  
    21.     }  
    22.     void ShowData()//定义输出函数  
    23.     {  
    24.         cout<<"goods_number:"<<goods_number<<" goods_name:"<<goods_name<<" person_name:"<<person_name<<" price:"<<price<<" amount:"<<amount<<endl;  
    25.     }  
    26. };  
    27. int main()   
    28. {    
    29.    Goods *goods=NULL;  
    30.    Goods *p;  
    31.    ifstream in("data.txt",ios::binary);    
    32.    if (! in.is_open())  
    33.    {   
    34.        cout << "Error opening file";  
    35.        exit (1);   
    36.    }  
    37.    Goods *p2;  
    38.    while (!in.eof())  
    39.    {  
    40.          
    41.         if(goods==NULL)  
    42.             p2=p=goods=new Goods;  
    43.         else  
    44.         {  
    45.             p2=p;  
    46.             p->next=new Goods;  
    47.             p=p->next;  
    48.         }  
    49.         in.read((char*)&(*p),sizeof(*p));  
    50.         p->next=NULL;  
    51.         if(in.eof())  
    52.         {  
    53.             free(p2->next);  
    54.             p2->next=NULL;  
    55.             break;  
    56.         }//目的是清除最后一次重复计入的商品,这个操作和\n以及eof有关  
    57.    }  
    58.    p->next=NULL;  
    59.    p=goods;  
    60.    while(p)  
    61.    {  
    62.     p->ShowData();  
    63.     p=p->next;  
    64.    }//打印链表  
    65.    return 0;  
    66. }  
    #include <iostream.h>  
    #include <fstream.h>  
    #include <stdlib.h>
    #include <cstring>
    class Goods
    {
    	public:
    	char goods_name[50]; //商品名称
    	int goods_number; //商品代码
    	char person_name[30]; //经办人
    	int price; //进货价
    	int amount; //库存量
    	Goods *next;//定义指向类Goods的指针变量next
    	Goods(int goods_number=0,char*goods_name="null",char*person_name="null",int price=0,int amount=0)//定义构造函数
    	{
    		this->goods_number=goods_number;
    		strcpy(this->goods_name,goods_name);
    		strcpy(this->person_name,person_name);
    		this->price=price;
    		this->amount=amount;
    	}
    	void ShowData()//定义输出函数
    	{
    		cout<<"goods_number:"<<goods_number<<" goods_name:"<<goods_name<<" person_name:"<<person_name<<" price:"<<price<<" amount:"<<amount<<endl;
    	}
    };
    int main() 
    {  
       Goods *goods=NULL;
       Goods *p;
       ifstream in("data.txt",ios::binary);  
       if (! in.is_open())
       { 
    	   cout << "Error opening file";
    	   exit (1); 
       }
       Goods *p2;
       while (!in.eof())
       {
    	   
    		if(goods==NULL)
    			p2=p=goods=new Goods;
    		else
    		{
    			p2=p;
    			p->next=new Goods;
    			p=p->next;
    		}
    		in.read((char*)&(*p),sizeof(*p));
    		p->next=NULL;
    		if(in.eof())
    		{
    			free(p2->next);
    			p2->next=NULL;
    			break;
    		}//目的是清除最后一次重复计入的商品,这个操作和\n以及eof有关
       }
       p->next=NULL;
       p=goods;
       while(p)
       {
    	p->ShowData();
    	p=p->next;
       }//打印链表
       return 0;
    }
    
    商品表及链表,所选取的数据结构和实际需要应该还是很贴切的。

    展开全文
  • 链表实现从文件读取和统计单词,该法应当还要添加文件读取方式
  • 链表读取文件和写文件

    千次阅读 2017-08-08 09:17:30
    #ifndef __1_H_ #define __1_H_ #define SIZE (sizeof(struct tongxun)/sizeof(char)) typedef struct tongxun { char id[20]; char name[30]; long num; char zhuzhi[100];...struct tongxun
  • void save(struct student *head) { FILE *write; struct student *p1; p1 = head;... strcat(filename,"....读取出来出现屯屯屯屯屯屯屯屯,但是其它数据正常,说是没有初始化,但是我都开辟内存空间都赋值了啊
  • void read_message()//读取文件 { FILE *fp1;// Ticket *p = head; fp1 = fopen("chepiao.txt","rb");// if(fp1 == NULL) { printf("文件打开错误!\n");// } while(!feof(fp1)) { putchar...
  • 链表文件读写实例

    千次阅读 2018-12-12 22:07:11
    12月份的第一篇博客,最近忙着吃鸡、忙着上班,写好的代码一直没有发布上来。...2、c语言文件读写操作(fgets读取文本内容后去除’\n’) fopen()第二个参数 3、C语言时间函数(具体请百度自学) tim...
  • C语言:文件数据传到链表,在将链表数据传回文件

    万次阅读 多人点赞 2018-07-31 09:57:16
    文件的增删查改一般都是将文件数据传输到链表上的,然后在链表上对数据进行处理,其主要有有两个关键, 1.文件数据传输到链表中 #include <stdio.h> #include <stdlib.h> #include<string.h&...
  • //文件读取 void ChioceSort(); //选择排序方法 bool Check(const char *); //校验输入是否正确 u_long NodeNum(const char *); //统计有效节点数 long *StrToNum(const char *); //将输入的字符串转换...
  • 链表的写入文件 /*====================存储彩票信息========================*/ /*功能:将彩票的全部数据写入文件 *参数:彩票数据链表 *返回值:布尔类型,读出成功返回TRUE,否则返回FALSE */ boolean ...
  • 已结贴√问题点数:20回复次数:12 如何将链表文件 fwrite()写入或 fread()读出? 请各位牛人异士。多多指教。。。fwrite(pstu,sizeof(struct student),1,fp);//向 fp 所指向的文件 stud 写入数据(输出)。fread...
  • 满意答案sdfsdwsw推荐于 2016.01.20采纳率:47%等级:10已帮助:1169人|#include#includestructdate{charstr[3];...//链表长度为lenstructdate*create_link(intlen){structdate*head;structdate*tmp;inti;hea...
  • (3) 将所建单链表中的内容写到一个文本文件中,反转单链表并再次将其内容追加到同一文本文件中,查阅其正确性。 思考并验证 如果不采用虚函数和多态性,本题会如何? 实验三评分标准: 完成所有要求,符合软件...
  • #include #include #include struct data { int year; int month; int day; }; struct cost{ int yuan; int jiao; int fen; }; struct treatment{ char pname[20];... printf("病人的名字%s\n...
  • ``` typedef struct movie{ //电影信息结构 char movie_num[40]; //电影编号 char movie_name[60]; //电影名 int price;...读取前的文件是没有圈起来的部分!创建的链表输出也没问题!
  • 同时也实现了文件读写,可以把输入的数据永久性的保存到该目录下的文件。在这里分享下! 文章目录头文件菜单主函数文件数据以链表方式读出链表写入文件新建联系人查看所有联系人查找指定联系人修改联系人删除联系...
  • feof(fp)) //如果文件没有结束,那么就持续循环 { //读取一行到buf中 //申请空间 if (NULL != fgets(buf, 1024, fp)) { //将数据追加到链表中 appendNode(list, buf); } } //关闭文件输入流 fclose(fp); alert(1); } ...
  • Motor.txt文件内容: s0001 vxvx 2 dfdsf dfsdf 22 22 dffds fdsfd s0002 dfdsf 2 fgdfg fdgdg 15 15 fggfddg fdggfd s0003 sdas 2 dfddf dfdfdf 12 12 fggf fggdf s0004 sfd 2 fddf dfsfd 12 12 dsffds ...
  • 希望能从.txt文件中读取出多行数据保存在<strong> 结构体指针 内,使用fscanf实现。思路如下:请各位高手,指点一下错误的地方 <code>typedef struct student{ char name[20]; //姓名 int ...
  • fp = fopen("storehouse.txt","w"); fwrite(); fclose(fp); int x; int n;//初次输入的大小 Node *L; if(!(L=(Node *)malloc(sizeof(Node)))) //分配空间 { printf("\n"); exit(1); } printf("欢迎...
  • //导入文件链表 int Creatlist(Linklist& L,const char* filename){ fstream file; Linklist p, q; p = L; file.open(filename); if (!file) { cout 出现错误"; return 0; } file >> head_1 >> head_2 >> head_3; ...
  • void download(Node *s) //从文件读取 { if(NULL == s) { return ; } int fd = open("Student.txt",O_RDONLY | O_CREAT); if(-1 == fd) { perror("open"); exit(1); } Node *p = s; int ret; while(1) ...
  • 请问C语言如何把链表存入文件,从文件读取链表Consumer*read_list(){FILE*fp;if((fp=fopen("CONSUMER.dat","rb"))==NULL){printf("无法读取CONSUMER.dat\n");returnNULL;}intsign;Consumer*s,*p,*head;head=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,800
精华内容 5,920
关键字:

链表读取txt文件