一个单链表创建学生信息的作业,要求要用文件的输入输出。
打全部路径会出现如图的错误。
打“C:\\student_info.txt”也不行。
把文件移到project8的文件夹下面打“student_info.txt”也不行。
已确定文件在文件夹内是存在的。F11调试确定就是fopen那块儿出的问题
求问怎么改......崩溃
#define _CRT_SECURE_NO_DEPRECATE
#include
#include
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int ElemType;
typedef int Status;
FILE fp;
/①单链表数据结构定义*/
typedef struct
{
int num; //学号
//char name[20]; //姓名
//int sex; //性别
//int dorm; //宿舍
//int tel; //电话
}Student;
//结点定义
typedef struct LNode
{
Student data;
struct LNode next;
}LNode;
//链表定义
typedef struct
{
LNode head; //指向头结点的指针
int length; //链表长度
}LinkList;
/*②单链表基本操作接口定义*/
//初始化链表:创建头结点,给L字段赋初值
//返回一个空的单链表
Status InitList(LinkList &L);
//初始条件:线性表L已经初始化
//采用头插法创建一个单链表,元素类型为整形,输入-9999时结束
Status CreateFromHead(LinkList &L);
//初始条件:线性表L已经初始化
//采用尾插法创建一个单链表,元素类型为整形,输入-9999时结束
Status CreateFromTail(LinkList &L);
//初始条件:线性表L已经存在
//打印出所有元素
void PrintElem(LinkList L);
//初始条件:线性表L已经存在
//查找第i个结点,若找到(1≤i≤n),则由e返回其值
Status GetElem_L(LinkList L, int i, ElemType &e);
//初始条件:线性表L已经存在
//在单链线性表L的第i个元素之前插入元素e
Status ListInsert_L(LinkList &L, int i, ElemType e);
//初始条件:线性表L已经存在
//删除第i个元素,并由e返回其值
Status ListDelete_L(LinkList &L, int i, ElemType &e);
int main()
{
LinkList L;
InitList(L);
CreateFromHead(L);
PrintElem(L);
system("pause");
}
/*③部分单链表操作的实现函数*/
Status InitList(LinkList &L) //初始化链表
{
L.head = (LNode*)malloc(sizeof(LNode));
if (!L.head)exit(OVERFLOW);
L.length = 0;
L.head->next = NULL;
return OK;
}
//初始条件:线性表L已经初始化
//采用头插法创建一个单链表,元素类型为整形,输入-9999时结束
Status CreateFromHead(LinkList &L)
{
LNode s;
int flag = 1;
int e;
L.head = (LNode)malloc(sizeof(LNode));
L.head->next = NULL;
while (flag)
{
fp = fopen("C:\Users\解诗雨\source\student_info.txt", "r+");
if (fp==NULL)
{
printf("打不开\n");
return OK;
}
fscanf(fp,"%d", &e);
if (e)
{
s = (LNode*)malloc(sizeof(LNode));
s->data.num = e;
s->next = L.head->next;
L.head->next = s;
++L.length;
}
else flag = 0;
fclose(fp);
}
return OK;
}
//初始条件:线性表L已经存在
//打印出所有元素
void PrintElem(LinkList L)
{
LNode* p;
p = L.head->next;
printf("当前的结点数为:%d\n", L.length);
while (p)
{
printf("%4d ", p->data.num);
p = p->next;
}
printf("\n");
}
文本:
因为现在还在创建链表其他还没弄完...