具体显示方法如下:
int main()
{
int i
FILE *data
data = fopen("peding.txt", "w")
if(!data) {
perror("对不起,文件找不到")
return 1
}
/*循环写入100次 */
for(i = 0i <100i++)
writedata(data)
fclose(data)
return 0
}
/*写入内容不操作*/
void writedata(FILE *data)
{
//刷新缓冲区
/* do other stuff */
...
}
看的太乱 我把我写的给你发一份 你可以参考参考
#ifndef _STULIST_H
#define _STULIST_H
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
#include<string.h>
#include<assert.h>//断言
#include<conio.h>//getch()
#define ADDSTU 1
#define DISPLAYSTU 2
#define UPDATE 3
#define DELSTU 4
#define SORTSCORE 5
#define SORTNUM 6
#define SELECTNAME 7
#define SELECTNUM 8
typedef struct student
{
long num
char name[32]
long classnum
float score_c
float score_english
float score_math
float score_avg
struct student * next
}nodelist,*pnodelist
#define LEN sizeof(nodelist)
#define FORMAT "%-7d%-12d%-9s%-8.2f%-11.2f%-8.2f%-7.2f%\n"
#define DATA p->num,p->classnum,p->name,p->score_c,p->score_english,p->score_math,p->score_avg
void menu(void)
int init_list(pnodelist *p)
void add_node(nodelist* phead,long num,char *s,long classnum,float c,float eng,float math)
void display_list(pnodelist phead)
void add_stu(pnodelist phead)
void destroy_list(pnodelist phead )
void del_node(pnodelist phead, long num )
pnodelist update_stu( pnodelist phead, long num)
void savefile(pnodelist phead)
void loadfile(pnodelist phead)
pnodelist foundmax(pnodelist phead)
pnodelist sortstu_avg(pnodelist phead)
pnodelist foundmin(pnodelist phead )
pnodelist sortstu_num(pnodelist phead)
void select_name(pnodelist phead,pnodelist val)
void select_num(pnodelist phead,pnodelist val)
#endif
//学生管理系统菜单
void menu()/*自定义函数实现菜单功能*/
{
system("cls")
printf("\n\n\n\n\n")
printf("\t\t|------------学生管理信息系统------------|\n")
printf("\t\t|\t 0. 退出学生管理系统 |\n")
printf("\t\t|\t 1. 增加学生信息 |\n")
printf("\t\t|\t 2. 显示学生信息 |\n")
printf("\t\t|\t 3. 修改学生信息 |\n")
printf("\t\t|\t 4. 删除学生信息 |\n")
printf("\t\t|\t 5. 按成绩进行排序 |\n")
printf("\t\t|\t 6. 按学号进行排序 |\n")
printf("\t\t|\t 7. 按姓名进行查询 |\n")
printf("\t\t|\t 8. 按学号进行查询 |\n")
printf("\t\t|----------------------------------------|\n\n")
printf("请选择您的操作:")
}
//初始化头指针
int init_list(pnodelist *p)
{
if (p == NULL)
{
return 0
}
*p = (pnodelist)malloc(LEN)
if( p == NULL )
{
printf("failed!\n")
return 0
}
(*p)->next = NULL
return 1
}
//添加学生信息
void add_stu(pnodelist phead)//输入学生信息
{
long num, classnum
char ch, name[32] = {0}
float c
float english
float math
do{
printf("please input: num classnum name c english math\n")
if( 6 == scanf("%ld %ld %s %f %f %f",&num,&classnum,name,&c,&english,&math) )
{
add_node(phead,num,name,classnum,c,english,math)
}
else
{
printf("error! Input parameters error\n")
printf("input enter to menu\n")
while(getchar() != '\n')continue//清除错误值
getch()
menu()
return
}
while(getchar() != '\n')continue
printf("continue? y/n\n")
ch = getchar()}while(ch=='Y '|| ch=='y')
printf("input enter to menu!\n")
}
//添加学生信息结点到链表中
void add_node( pnodelist phead, long num, char* s, long classnum, float c, float english, float math )//将学生信息写入文件
{
pnodelist p = phead
pnodelist q = NULL
assert(phead != NULL)
q = (pnodelist)malloc(LEN)
assert(q != NULL)
q->num = num
q->classnum = classnum
q->score_c = c
q->score_english = english
q->score_math = math
q->score_avg = (float)( ( q->score_c + q->score_english + q->score_math ) / 3.0 )
strcpy(q->name,s)
q->next = NULL
while(p->next != NULL)
{
p = p->next
}
p->next = q
}
//显示学生信息
void display_list(pnodelist phead)
{
pnodelist p = NULL
assert(phead != NULL)
p = phead->next
if (p == NULL)
{
printf("no record!\n")
printf("input enter to menu!\n")
}
else
{
printf("num classnum name c english math avg\n")
while(p != NULL)
{
printf(FORMAT,DATA)
p = p->next
}
printf("input enter to menu!\n")
}
return
}
//按学号修改学生信息
pnodelist update_stu( pnodelist phead, long number)
{
long num, classnum
char ch, name[32] = {0}
float c
float english
float math
pnodelist p = NULL
assert(phead != NULL)
p = phead->next
if (p == NULL)
{
printf("no record!\n")
}
else
{
while( (p->next != NULL) &&(p->num != number) )
{
p = p->next
}
if(p->num != number)
{
printf("no such num record!\n")
return 0
}
printf("please input: num classnum name c english math\n")
scanf("%ld %ld %s %f %f %f",&num,&classnum,name,&c,&english,&math)
p->num = num
p->classnum = classnum
strcpy(p->name,name)
p->score_c = c
p->score_english = english
p->score_math = math
p->score_avg = (float)( ( p->score_c + p->score_english + p->score_math ) / 3.0 )
}
return phead
}
//清除所有信息
void destroy_list(pnodelist phead )
{
pnodelist p
while(phead->next!=NULL)
{
p = phead->next
phead->next = phead->next->next
free(p)
}
free(phead)
return
}
//删除学号为num的学生信息
void del_node(pnodelist phead, long num )
{
pnodelist p,q
assert(phead != NULL)
p=phead
q=p->next
//assert( q != NULL )
if ( q == NULL )
{
printf("no record!\n")
return
}
while(q!=NULL &&q->num!=num )
{
p=q
q=q->next
}
if(q==NULL)
{
printf("no such record!\n")
}
else
{
p->next=q->next
free(q)
printf("delete successfully\n")
}
}
//保存链表信息到文件中
void savefile(pnodelist phead)
{
FILE *fp = NULL
pnodelist p = NULL
assert( phead != NULL)
p = phead->next
fp = fopen("file.txt","wb")
assert(fp != NULL)
while(p != NULL)
{
fwrite(p,LEN,1,fp)
p = p->next
}
fclose(fp)
}
//装载文件信息到链表中
void loadfile(pnodelist phead)
{
FILE* file
nodelist p
assert(phead != NULL)
//p = phead
file = fopen("file.txt","rb")
//assert(file != NULL)
if (file == NULL)
{
return
}
while(fread(&p,LEN,1,file) == 1)
{
phead->next = (pnodelist)malloc(LEN)
assert(phead->next != NULL)
*(phead->next) = p
phead = phead->next
}
fclose(file)
}
//寻找链表中平均成绩最大值
pnodelist foundmax(pnodelist phead )
{
pnodelist max = NULL
pnodelist s = NULL
pnodelist p = NULL
assert(phead != NULL)
if(phead->next == NULL)
{
return NULL
}
max = phead
p = phead
while(p->next != NULL)
{
if( p->next->score_avg >max->next->score_avg )
{
max = p
}
p = p->next
}
s = max->next
max->next = max->next->next
return s
}
//对平均值进行排序
pnodelist sortstu_avg(pnodelist phead)
{
pnodelist phead1 = NULL
pnodelist s = NULL
pnodelist p = NULL
assert( init_list(&phead1) != 0 )
p = phead1
assert(phead != NULL)
while( ( s = foundmax(phead) ) != NULL )
{
p->next = (pnodelist)malloc(LEN)
*(p->next)= *s
p = p->next
p->next = NULL
}
savefile(phead1)
printf("sort ok!\nSuccessfully saved!\ninput enter to menu!\n")
return phead1
}
//寻找链表中学号最小值
pnodelist foundmin(pnodelist phead )
{
pnodelist min = NULL
pnodelist s = NULL
pnodelist p = NULL
assert(phead != NULL)
if(phead->next == NULL)
{
return NULL
}
min = phead
p = phead
while(p->next != NULL)
{
if( p->next->num <min->next->num )
{
min = p
}
p = p->next
}
s = min->next
min->next = min->next->next
return s
}
//对学号进行排序
pnodelist sortstu_num(pnodelist phead)
{
pnodelist phead1 = NULL
pnodelist s = NULL
pnodelist p = NULL
assert( init_list(&phead1) != 0 )
p = phead1
assert(phead != NULL)
while( ( s = foundmin(phead) ) != NULL )
{
p->next = (pnodelist)malloc(LEN)
*(p->next)= *s
p = p->next
p->next = NULL
}
savefile(phead1)
printf("sort ok!\nSuccessfully saved!\ninput enter to menu!\n")
return phead1
}
//按姓名进行查询
void select_name(pnodelist phead, pnodelist val )
{
pnodelist p = NULL
if(phead->next == NULL)
{
printf("no record!\n")
return
}
p = phead->next
while(p != NULL)
{
if( 0 == strcmp(p->name,val->name) )
{
printf("num classnum name c english math avg\n")
printf(FORMAT, DATA)
return
}
p = p->next
if(p == NULL)
{
printf("no such record!\n")
return
}
}
}
//按学号进行查询
void select_num(pnodelist phead, pnodelist val )
{
pnodelist p = NULL
if(phead->next == NULL)
{
printf("no record!\n")
return
}
p = phead->next
while(p != NULL)
{
if( p->num == val->num )
{
printf("num classnum name c english math avg\n")
printf(FORMAT, DATA)
return
}
p = p->next
if(p == NULL)
{
printf("no such record!\n")
return
}
}
}