C语言链表与文件 从文件读数据到链表里 5C

#include
#include
#include
#include

//定义全局变量
int isEmpty=0;//标志,判断链表是否为空

//!!!定义单链表结构体!!!
typedef struct Node{
int NUM;//类型总数
char NAME[100];//各类型名称
int num; //各类型下的货物总数
struct Node*next;
}Node;

//函数声明
Node*create(int n,Node*L);
Node*input(Node*L);
Node*output(Node*L);
Node*outnum(Node*L);
Node*outname(Node*L);
Node*current(Node*L);
void search(Node*L);
void print(Node*L);
void searchnum(Node*L);
void searchname(Node*L);
void display(int n,Node*L);
//========新增加的函数========
Node*append(Node*L);

//主函数
void main()
{
//创建文件
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);
}

printf("欢迎使用我的仓库管理系统!\n"); 
while(1)
{
    //主菜单开始 
    printf("==========================\n");
    printf("1.显示货物类型列表\n");
    printf("2.增加货物类型\n");
    printf("3.删除货物类型\n");
    printf("4.货物入库\n");
    printf("5.货物出库\n");
    printf("6.库存显示\n");
    printf("7.退出\n");
    printf("==========================\n");
    //主菜单结束
    printf("选择1-7:");
    scanf("%d",&x); 
    switch(x)
    {
        case 1:;break;
        case 2:printf("请输入最初的货物类型数量:\n");
               scanf("%d",&n);
               create(n,L);
               break;
        case 3:;break;
        case 4:;break;
        case 5:;break;
        case 6:display(n,L);break;
        case 7:;break;
        default:printf("input error!\nplaese input1-7");
    }       
}           

}

想要读入货物信息:货物名称 货物价格 所属类型?这个怎么搞!
图片说明

//函数
//1.创建链表节点
Node*create(int n,Node*L)
{
Node*pTail=L;
L->next=NULL;
Node*p;
//利用尾插建立单链表
int i;
for(i=1;i<=n;i++)
{

p=(Node*)malloc(sizeof(Node));
if(p==NULL)
{
printf("申请内存空间失败!\n");
}

printf("请输入第%d种类型编号:",i);
scanf("%d",&p->NUM);
printf("请输入第%d种类型名称:",i);
scanf("%s",&p->NAME);
printf("请输入第%d种类型库存:",i);
scanf("%d",&p->num);
putchar('\n');
pTail->next=p;
pTail=p;
}
p->next=NULL;
return L;
}

//货物显示函数
void display(int n,Node*L)
{
Node*p;
p=(Node*)malloc(sizeof(Node));
p=L->next;;
int i=0;
for(i=0;i //{
//while(p!=NULL)
{
printf("第%d种类型名称:",p->NUM);
printf("%s\n",p->NAME);
printf("第%d种类型库存:",p->NUM);
printf("%d\n",p->num);
putchar('\n');
p=p->next;
//}
}

}

0

4个回答

看不懂你想表达啥.

如果是文件读写相关的话, 搜索相关API(函数)的用法, 例如 fread, fwrite

0
cara_celia
cara_celia 大方向就是想把货物信息附属于货物类型里
大约一年之前 回复

你之前输入是从键盘输入,用的是scanf
输出是输出到显示屏,用的是printf
现在你无非就是输入输出都是到文件了,就改成fscanf 和 fprintf,它们是scanf和printf的兄弟,用法是一样的。

这里有个例子:https://blog.csdn.net/c_manito/article/details/71331218

如果你看了还是写不出,我再帮你。

0
cara_celia
cara_celia 我把它复制到dev c++里面运行好像不对(我就在桌面上建了一个input.txt的文本文件)
大约一年之前 回复

建立定一个两个实体类型:
货物类型GoodsType, 货物本身Goods

 typedef struct GoodsType
{
    int type_id;
    char type_name[16];
        int type_num;
} GoodsType

typedef struct Goods
{
    char goods_name[16];
        char goods_num;
        int goods_type_id;
        // Other properties of goods
} Goods;

根据类型, 查询所有此类货物时, 只需要找到goods_type_id为type_id的货物.
根据货物, 查询所属类型时, 只需要找到type_id为goods_type_id的货物类型

0

可以连一个数据库,操作数据库就可以了,没必要非要存在一个文件里面

0
cara_celia
cara_celia 没学数据库呢
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
将文件读取到链表里面
/* * func.c * * Created on: 2012-12-8 * Author: wzm */ #include"head.h" void Init(pList mylist) { mylist->size=0; mylist->head.next=NULL; mylist->head.s=NULL; } int Create(pList mylist
单链表及文件操作 从txt文件中读取数据并自动建立单链表
1、从文本文件中导入班级学生信息:学号、姓名、性别、籍贯 2、将学号重复的删除 3、显示导入的学生信息(文件加后缀) 4、按学号、姓名、性别、籍贯相等和不相等查找 5、多次查找 6、查找结果写入文件 7、VC++6.0编译通过
C 学习笔记--读文件到链表
读文件到链表
C语言:文件数据传到链表,在将链表数据传回文件
          对文件的增删查改一般都是将文件数据传输到链表上的,然后在链表上对数据进行处理,其主要有有两个关键,     1.文件数据传输到链表中    #include &amp;lt;stdio.h&amp;gt; #include &amp;lt;stdlib.h&amp;gt; #include&amp;lt;string.h&amp;gt; #include &amp;lt;sys/stat.h&amp;gt; #include&amp;l...
使用链表读取数据
使用链表读取数据
附带文件操作的通讯录,可以实现链表到文件的写入以及文件到链表的读取
#include #include #include #include #define MAXSIZE 10 typedef struct NODE {     char name[MAXSIZE];     char p_num[MAXSIZE];     struct NODE *next; }node; typedef struct {     char
从文件读取数据构建单链表,返回链表头指针
/* * 从文件读取数据构建单链表,返回链表头指针。 * 以正序方式构建链表需要两个变量 head, tail * * 有没有更加简洁的方式?? */ node * list(ifstream &file) { int n; node *head = NULL, *tail = NULL; int v; file >> n; file >> v;
c语言链表数据存入文件和读取文件
c语言,链表数据存入文件和读取文件
通过读取文件创建链表.c
#includetypedef struct student{ int id; int age; int score; char name[128]; struct student* next;}STU,*PSTU;int main(int argc, char*argv[]){ if(argc printf("no param!\n"); return -1; } FILE * fp; ST
从txt文件中读取数据并自动建立单链表
从文本文件中读取数据并自动建立单链表 另一个完整的程序 http://download.csdn.net/source/3198575 VC++6.0环境下编译通过
读取文件创建单链表.c
# include # include FILE *fp ;typedef struct student {    int id ;    int age ;     int score ;    char name[20];    struct student *next ;}STU , *PSTU ; PSTU head = NULL ;int main () { fp = fopen ("s
C++ 将数据写入链表,将链表写入文件,再将文件中的内容读出
就算世界荒芜,总有一个人,他会是你的信徒。          ----《独木舟里的星星》 第一步:创建一个节点 templatetypename T> class Node { public:     Node(T data)     {         m_data = data;         m_pNext = NULL;     }     c
关于链表的C++文件读写
课程设计时需要构建一个商品表,我使用的是一个链表来存储一个个商品,那么在过程中需要将信息存储进文件,再从文件读取到内存的链表中。 思路不是很难,但是还是卡在了一些细节上。 细节1:存储1~n个商品时,在最后一个商品及n商品时,在文件末尾会多一个换行符,这个换行符会影响到文件的读写操作。 细节2:链表的每个商品信息在读取时都需要动态分配内存,以及一些指针的操作问题。(平时只注重于算法的学习了,
【数据结构】C语言实现顺序链表
这是在上数据结构课程时候的练习,贴出来做备忘。 #include #include #include #include #include typedef int elemtype; #define TRUE 0 #define FALSE 1 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #if(1) typed
c语言学生信息管理系统(链表、文件)
这是本人历时两周的课程设计,名为学生信息管理系统课程设计(基于链表与文件的设计),(有的地方还可以加以修改含bug)希望对大家对链表与文件反面的知识有所帮助!
C语言文件读取并写入链表
C语言没啥要逼逼的,直接上代码,用心体会 #include "stdio.h" #include "stdlib.h" /***************************** 链表节点结构体 ****************************/ typedef struct link_node { int ID; char name; int Yuwen; int ...
C++数据链表在txt中储存与读取问题
// text_savedata.cpp : 定义控制台应用程序的入口点。//#include "StdAfx.h"#include #include #include #include #include #include #include # define LEN sizeof(struct news)# define NULL 0using namespace std;struct news{ char type; //int number;    char title [30]; char conte
为何将文件名字读取到内存用链表存放,再从内存中读取信息输出到屏幕只显示一部分?
这次做的小项目是拷贝文件夹下所有文件到目标路径,并在读取源路径的同时将文件夹下所有文件的名字存放到链表中。 而我强无敌啊。用的是循环双向链表存放的数据。先上结构体: /* 用于存放文件信息 */ typedef struct FILE_STRU { unsigned char *name; /* 文件名字 */ struct FILE_STRU *prev, *next
C语言实现String的生成和输出----链表
闲暇之余用C语言实现了字符串的生成和输出操作,其它的功能能有兴趣的可以拓展着玩儿. #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; #include&amp;lt;string.h&amp;gt; typedef struct string{ string *next; string *last; int value;//当前节点值 h...
C语言 从文件导入信息建立一个链表
从文件导入数据建立一个链表,实现学生信息的增,删,查,取功能 链表的建立分为头插和尾插,头插数据读取顺序与插入顺序相反。尾插读取顺序与插入顺序相同。 具体代码如下: 尾插法: #include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;string.h&gt; #include&lt;stdlib.h&gt; #include&lt;e...
c语言学生信息管理系统(基于文件、链表)
/************************************************************** 要求: 1、管理学生的信息,包括,学号,姓名,各科成绩 2、将信息保存成文件,能反复使用 3、对信息操作,包括,添加学生信息,修改,删除, 按学号、姓名查询学生信息 4、能进行科目成绩排序,科目分数段查询 附data文件实例: 001 小黑
C语言-----循环双向链表(增加文件读写链表功能)
双向链表其实是单链表的改进。 当我们对单链表进行操作时,有时你要对某个结点的直接前驱进行操作时,又必须从表头开始查找。这是由单链表结点的结构所限制的。因为单链表每个结点只有一个存储直接后继结点地址的链域,那么能不能定义一个既有存储直接后继结点地址的链域,又有存储直接前驱结点地址的链域的这样一个双链域结点结构呢?这就是双向链表。 在双向链表中,结点除含有数据域外,还有两个链域,一个存储直接后继结
C语言文件读写操作,从文件读取数据
C语言文件读写操作,从文件读取数据
C语言 头指针链表
链表是比较重要的一个点,头指针链表和头结点链表都是,但也是有不同之处,头指针链表的开头出是一个指针指向首节点,而头结点链表是有一个头结点指向首节点的,同时也是有个节点指向头节点的。 #include #include #define TRUE 1 #define FALSE 0 typedef int LinkData; // 链表的数据类型 typedef struct
C从文件读取数据初始化数据对象
#include <stdio.h>struct person { char name[32]; int age; float weight; };struct person p[2];void main () { FILE *fp; int i; fp=fopen("test.bin","rb"); fread(p, sizeof(struc
C语言:从文件中读入数据
任务代码: 编程序:实现文本文件的复制 将source.txt文件复制成target.txt文件 #include #include int main() { printf("此程序执行将source.txt中的文本复制到target.txt之中!"); FILE *fpin,*fpout;//定义两个文件指针,因为要对两个文件实施操作 char c; //打开和错误判
如何用c语言从txt文件中读取数据
用C语言从txt文件中读取数据,可以使用C标准库文件自带的文件接口函数进行操作。 一、打开文件: FILE *fopen(const char *filename, const char *mode); 因为txt文件为文本文件, 所以打开时选择的mode应为&quot;r&quot;或者&quot;rt&quot;。 二、读取文件: 读取文件应根据文件内容的格式,以及程序要求,选择读取文件的函数。可以使用一种,也可以几种混用。 常用的...
C语言算法(代码):假设文件中有许多单词,将单词从文件中读出,放到链表中,按字母升序实现
#include #include struct node{ char *data;       /*接点的数据域为指针,或理解为字符数组*/  struct node *next;}*head,*p,*q;int main()  /*假设文件中有许多单词,将单词从文件中读出,放到链表中,按字母升序实现*/{ int i;  char ch; 
链表中的**p问题
我们在阅读关于链表的代码时常常会看到**p的用法,尤其是在形参与实参的传递中。例如下面这段代码中:void addAll(Link ** head, Link **temp, Link*p) { if (*head==NULL) { *head = p; *temp = p; } else { (*temp)-&amp;gt;pNext = p; *temp = p; } }...
从链表中读取文件和写文件
#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]; long tel; struct tongxun
c语言如何从txt文件读取数据
打开文件 fopen("需要打开的路径")然后使用fgets函数读取行 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LINE 1024 int main() { char buf[MAX_LINE]; /*缓冲区*/ FILE *fp
listbox中文件读取列表的操作
listbox从文件中读取列表的操作ListBox1.Items.LoadFromFile(ExtractFilePath(Application.ExeName)+’aaa.txt’);ListBox1.Items.Add(Edit1.Text); //添加了一个项目ListBox1.Items.SaveToFile(ExtractFilePath(Application.ExeName)+’a...
c语言 用链表构造字符串
今天一个同学问我怎么用链表构造字符串  然后我简单的说了下思路 ...不过他还是没写出来  因为数据结构在讲字符串的时候,老师主要讲了顺序构造字符串 链式构造字符串缺点太多 自己也没有看 然后自己今天写了一下 支持动态扩展 主文件: #include #include "ListString.h" int main(){     char str[100]={'h','e','l',
C链表使用fread和fwrite写入文件和从文件读出
C链表使用fread和fwrite写入文件和从文件读出 具体代码如下 //结构类型 typedef struct Lnode { ElemType data; struct Lnode *next; }Lnode, *Linknode; //写文件的方法 status SaveList(Linknode &amp;amp;L) { FILE *fp; char filename[30]; ...
通讯录 数据库文件读入链表 链表数据存入数据库
#include #include #include #include #include #include #include #define len sizeof(struct Node) #define ERROR   1 #define OK      0 void inquire_nocb(sqlite3 *db); void inquire_usecb(sq
C语言学生管理系统(链表以及文件操作)
#include&amp;lt;stdio.h&amp;gt;#include&amp;lt;stdlib.h&amp;gt;#include&amp;lt;string.h&amp;gt;struct Student { char m_strName[100]; char m_strSex[10]; char m_strNumber[100]; double m_fEnglish; double m_fMath; double m_fComp...
(数据结构)带有哑头节点的循环链表结构给程序员带来了什么优点?
书中的练习题: 优点就在于,插入和删除操作只需要考虑一种情况, 就是第i个节点位于当前的第i个节点和它的前一个节点之间的这种情况。 第i个节点是第一个节点的时候,它之前的节点就是头节点。 当i&amp;gt;=n,之前的节点就是最后一个节点,并且头节点是其下一个节点。      ...
C语言实现单链表的初始化、创建、遍历等操作
编译环境:VC++6.0 #include#includetypedef struct LNode{int data;struct LNode *next;}LNode,*LinkList;LinkList Init_LNode() //链表初始化{LNode *L;L = (LinkList)malloc(sizeof(LNode));if(L == NULL){printf("初始化失败!\
C语言-单向链表实现字符串的比对
题目内容:题目说起来很简单,你会读到两个字符串,每个字符串占据一行,每个字符串的长度均小于10000字符,而且第一个字符串的长度小于第二个字符串的。你的程序要找出第一个字符串在第二个字符串中出现的位置,输出这些位置,如果找不到,则输出-1。注意,第一个字符的位置是0。注意,第一个字符串在第二个字符串中的位置可能不止一处。注意,字符串中可能含有空格。注意,两个字符串的长度一定大于0。输入格式:两个字...
c语言--通过栈反转链表
反转链表,栈
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 课程表里数据库 课程表里数据库