c语言 怎么将一个txt文件的所有信息删除

Python010

c语言 怎么将一个txt文件的所有信息删除,第1张

c语言将一个txt文件的所有信息删除的实现方法是以写模式打开一个同名文件,用来覆盖原来的文件,这样原来文件的内容将被删除。

具体显示方法如下:

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

}

}

}