永发信息网

如何将文件txt里的信息存入单链表? 这是我的代码,哪位大神给修改修改。

答案:1  悬赏:30  手机版
解决时间 2021-03-07 13:31
  • 提问者网友:精神病院里
  • 2021-03-07 00:33
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#define N 100
struct stdents // 结构体定义变量
{
char num[20];
char name[10];
char sex[3];
float math;
float english;
float cpro;
int ID;
struct stdents *next;

}st;
typedef struct NODE // 结构体定义变量
{
char num[20];
char name[10];
char sex[3];
float math;
float english;
float cpro;
int ID;
struct INFO *next;

};
typedef struct Node ListNode;

void frist_print();
void menu_select();
void input();
void print();
ListNode *creat(int n);

void input() //创建文件并录入信息
{
int i,x;
//char ch;
FILE *fp;
if((fp=fopen("管理系统.txt","w+"))==NULL)
{
printf("文件打开失败!\n");
exit(0);
}
printf("请输入初始化学生的人数:\n");
scanf("%d",&x);
for(i=0;i<x;i++)
{

printf("请输入成绩的--编号:\t");
getchar();
gets(st.num);
printf("姓名:\t");
gets(st.name);
printf("性别:\t");
gets(st.sex);
printf("数学成绩:\t");
scanf("%f",&st.math);
printf("英语成绩:\t");
scanf("%f",&st.english);
printf("C语言成绩:\t");
scanf("%f",&st.cpro);
printf("学号:\t");
scanf("%d",&st.ID);
if(fwrite(&st,sizeof(struct stdents),1,fp)!=1)
{
printf("信息写入失败!\n");
exit(0);
}

}
creat(x);

fclose(fp);
menu_select();

}

ListNode *creat(int n)
{
int i;
ListNode *head,*p,*s,*q;
FILE *fp;
head=(NODE *)malloc(sizeof(NODE));
head->next=NULL;

if((fp=fopen("管理系统.txt","r"))==NULL)
{
printf("文件打开失败!\n");
exit(0);
}
while(fread(&st,sizeof(struct stdents),1,fp)==1)
{
for(i=1;i<=n;i++)
{
fscanf(fp,"%s%s%s%f%f%f%d",&st.num,&st.num,&st.name,&st.sex,&s.math,&st.english,&st.cpro,&st.ID);
q=(NODE *)malloc(sizeof(NODE));
q->next=NULL;
q=head->next;

}

}
fclose(fp);
return head;
}
最佳答案
  • 五星知识达人网友:爱难随人意
  • 2021-03-07 00:40
(fp=fopen("course.txt","r"))
"r"是以读取方式打开吧,"w"是写入
r 以只读方式打开文件,该文件必须存在。

r+ 以可读写方式打开文件,该文件必须存在。

rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。

rw+ 读写打开一个文本文件,允许读和写。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯