int Load_1()//把文件中的数据读取到链表中
{
FILE* pf = fopen("d:\\Stu.lp", "rb");
Stu* pTemp;
while (!feof(pf))
{
pTemp = (Stu*)malloc(sizeof(Stu));
fread(pTemp, sizeof(Stu),1, pf);
pTemp->pNext = pHead;
pHead = pTemp;
}
return 0;
}
void Save_1()//把程序中用的数据保存到文件中
{
FILE* pf = fopen("d:\\Stu.lp", "wb");
struct Stu* pTemp = pHead;
while (pTemp)
{
fwrite(pTemp, sizeof(Stu),1, pf);
pTemp = pTemp->pNext;
}
}
这是定义的两个结构体:
typedef struct Stu_Data
{
char S_Name[20];
size_t S_Num;
float S_Score;
}Data;
struct Stu
{
Data D;
struct Stu* pNext;
};
新手代码写的不好,
这个 load()函数总是多循环一次打出乱码
你的链表有初始化没有,第一行打出乱码,是你没初始化,打出来是别的什么东西的地址,入后是最后一行打出乱码,则是你地址越界,打出别的什么东西,最后一行打出乱码的话很有可能导致你程序崩溃的。