首先,鏈表中每個學生節點的信息包括這些:姓名,學號,班內序號,手機號。所以定義這樣的結構體類型:
structstudent{
chariname[20];
intinumber;
charsnum[10];
chariPhone[20];
structstudent*next;
};
因為C語言是模塊化的語言,所以把要實現的每個功能都做成一個函數,在主函數的選擇語句中調用:
這些函數有:1.初始錄入或添加學生信息函數:
structstudent*Creat();
返回值為鏈表的頭節點地址,功能是錄入學生信息并保存到D:\\stuifo.txt文件下。
2.插入學生信息函數:
voidInsert();
功能:讀出文件內的信息到鏈表,再將信息插入到其中,再保存到本地。
3.遍歷文件中的學生信息
voidprint();
功能:讀出文件內的信息到鏈表,再將其依次輸出。
代碼示例:
#include
<stdio.h>
#include
<stdlib.h>
#include
<string.h>
typedef
struct
STU_INFO
{
char
stuNo[7];
char
stuName[11];
}
STU_INFO;
int
main(int
argc,
char
*argv[])
{
FILE
*in,
*out;
char
stuNo[7];
char
stuName[11];
STU_INFO
info;
char
*filePath
=
"c:/stu.dat";
if
((out
=
fopen(filePath,
"a+"))
==
NULL)
{
printf("open
file
error");
return
-1;
}
printf("請輸bai入du0結束\n");
while(1)
{
printf("請輸入學號(長度6)
exac
100000:\n");
scanf("%s",
stuNo);
if
(atol(stuNo)
==
0)
{
break;
}
else
if
(atol(stuNo)
&&
strlen(stuNo)
==
6)
{
printf("請輸入姓名(長度<=10)
exac
張三:\n");
scanf("%s",
stuName);
fprintf(out,
"%s,%s\n",
stuNo,
stuName);
}
else
{
printf("輸入錯誤\n");
continue;
}
}
fclose(out);
printf("\n
請輸入要查詢的zhi學號:dao\n");
scanf("%s",
stuNo);
if
((in
=
fopen(filePath,
"r"))
==
NULL)
{
printf("open
file
error");
return
-1;
}
while
(!feof(in))
{
fscanf(in,
"%6s,%s",
info.stuNo,
info.stuName);
if
(atol(stuNo)
==
atol(info.stuNo))
{
printf("學號:%s
姓名:%s\n",
info.stuNo,
info.stuName);
break;
}
}
if
(feof(in))
{
printf("不存在這個學生!!!\n");
}
fclose(in);
return
0;
}