问题遇到的现象和发生背景
大一c语言,一个汽车零部件采购信息管理程序
问题相关代码,请勿粘贴截图
问题出现在
//用链表来记录和存储汽车零部件采购管理系统
//每个采购信息包括:采购编号,零部件名称,采购日期,采购员,采购数量,采购单价,供货单位
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct a
{
char stu_no[20];//采购编号
char stu_name[20];//零部件名称
char date[20];//采购日期
char crew[20];//采购员
double price;//采购价格
int sum;//采购数量
char company[20];//采购单位
}elemtype;
//链表中每个节点的定义
typedef struct node
{
elemtype data;//数据域
struct node *next;//指针
}NODE;
NODE *create();
void print(NODE *head);
void insert(NODE *head);
void insertBypos(NODE *head);
void deleteBypos(NODE *head);
void showMenu();
void search_menu(NODE *head);
void num(NODE *head);
void name(NODE *head);
void crew(NODE *head);
void com(NODE *head);
void search_menu2(NODE *head);
void num2(NODE *head);
void data_menu(NODE *head);
void save(NODE *head);
void read(NODE *head);
void data_menu(NODE *head){//文件目录
system("cls");
printf("请选择你要进行的操作\n");
printf("1.读取文件\n");
printf("2.保存为文件(地址:D:/data)\n");
printf("0.返回到主菜单\n");
int a;
while(1){
fflush(stdin);
scanf("%d",&a);
if(a==1||a==2||a==0)
break;
else
printf("你的输入有误,请重新输入:\n");
}
switch(a){
case 1:read(head);break;
case 2:save(head);break;
case 0:break;
}
}
void save(NODE *head){//保存
}
void read(NODE *head){//读取
system("cls");
int i,x;
FILE* fp;
NODE *s,*p;
char ch;
printf("文件需要按照:采购编号;零部件名称;采购日期;采购员;采购价格;采购数量;采购单位\n的格式来写,每一行代表一条采购信息\n");
char data[20];
printf("请输入文件地址:\n");
scanf("%s",data);
x=strlen(data);
for(i=0;i<x;i++){
if(data[i]=='\\');
data[i]='/';
if ((fp = fopen(data, "r")) == NULL){
perror("读取失败\n");
return ;
}else{
p=head->next;
while(p->next!=NULL)//循环的作用是查找链表中最后一个结点
{
p=p->next;
}
s=(NODE *)malloc(sizeof(NODE));
while(1) {
s->next=NULL;
fscanf(fp,"%s;%s;%s;%s;%lf;%d;%s\n",s->data.stu_no,s->data.stu_name,s->data.date,s->data.crew,&s->data.price,&s->data.sum,s->data.company);
p->next=s;
if(fscanf(fp,"%s")!=0);
}
}
}
}
运行结果及报错内容
因为不知道fscanf函数如何使用所以运行不了
我的解答思路和尝试过的方法
还没
我想要达到的结果
把目标文件的信息全部在链表的后面挂链