不用链表,单是结构体写入文件后,是否可以进行修改删除

#include

#include

#include

typedef struct Node

{

char  num[20];

char name[20];

}STU;

void add();

void read(char *);

void delete();

void visit();

int main()

{

while(1)

{

printf("1  add\n");

printf("2  delete\n");

int i;

scanf("%d",&i);

switch(i)

{

case 1:

add();

break;

case 2:

{

visit();

delete();

printf("===========================\n");

visit();

break;

}

default:

break;

}

}

return 0;

}

void delete()

{

char p[128];

char num[128];

int i=0;

FILE *fp=fopen("stu.txt","r+");

if(fp == NULL)

{

printf("文件不存在!\n");

exit(1);

}

STU *stu2=(STU *)malloc(sizeof(STU));

printf("输入需要删除的num!\n");

scanf("%s",num);

rewind(fp);

while(1)

{

fseek(fp,i*sizeof(STU),SEEK_SET);

fread(stu2,sizeof(STU),1,fp);

if(strcmp(p,stu2->num)==0)

{

break;

}

if(strcmp(num,stu2->num)==0)

{

free(stu2);

strcpy(stu2->num,"");

strcpy(stu2->name,"");

break;

}

strcpy(p,stu2->num);

i++;

}

fclose(fp);

}

void add()

{

FILE *fp=fopen("stu.txt","a+");

STU *stul=(STU *)malloc(sizeof(STU));

printf("请输入编号:\n");

scanf("%s",stul->num);

printf("请输入姓名:\n");

scanf("%s",stul->name);

if(fgetc(fp) != EOF)

{

read(stul->num);

}

fwrite(stul,sizeof(STU),1,fp);

fclose(fp);

}

void read(char *num)

{

char p[128]="abcd";

int i=0;

FILE *fp = fopen("stu.txt","r");

STU *stu2=(STU *)malloc(sizeof(STU));

rewind(fp);

while(1)

{

fseek(fp,i*sizeof(STU),SEEK_SET);

fread(stu2,sizeof(STU),1,fp);

if(strcmp(p,stu2->num)==0)

{

break;

}

if(strcmp(num,stu2->num)==0)

{

printf("用户名已经存在!\n");

break;

}

strcpy(p,stu2->num);

i++;

}

fclose(fp);

}

void visit()

{

char p[128]="abcd";

int i=0;

FILE *fp=fopen("stu.txt","r");

STU *stu2=(STU *)malloc(sizeof(STU));

rewind(fp);

while(1)

{

fseek(fp,i*sizeof(STU),SEEK_SET);

fread(stu2,sizeof(STU),1,fp);

if(strcmp(p,stu2->num)==0)

{

break;

}

printf("第%d次:%s  %s\n",i,stu2->num, stu2->name);

strcpy(p,stu2->num);

i++;

}

fclose(fp);

}

不用链表,单是结构体好像不能进行修改删除动作,上述代码只是实现了读和写,删除没有实现,各位大大可否帮忙,谢谢了!

c语言 增加 删除 修改的功能 不用链表,不用链表,单是结构体写入文件后,是否可以进行修改删除...相关推荐

  1. c语言怎么往结构体中传数据,怎么把文件数据写入结构体 c语言 怎么将结构体写入文件...

    怎么把结构体的数据写到文件中 C语言把一个结构体数组写入文件分三步: 以二进制写方式(wb)打开文件 调用写入函数fwrite()将结构体数据写入文件 关闭文件指针 相应的,读文件也要与之匹配: 以二 ...

  2. c语言中将结构体写入文件,C语言中将结构体写入文件

    可以使用fwrite()将一个结构体写入文件: fwrite(&some_struct,sizeof somestruct,1,fp); 对应的fread函数可以再把它读出来,此处fwrite ...

  3. 程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据。...

    程序通过定义学生结构体变量,存储学生的学号.姓名和3门课的成绩.函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据.例如,若b所指变量t中的学号.姓名和三门课的成 ...

  4. C语言编程>第十八周 ⑧ 给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。

    例题:给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列. 注意:请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句. 代码如 ...

  5. 按平均成绩排行c语言文件操作,学生成绩管理系统(c语言结构体以及文件操作)实验报告精选.doc...

    学生成绩管理系统(c语言结构体以及文件操作)实验报告精选 C程序设计 实验报告 编号: 姓名院系学号任课教师于萧指导教师实验地点实验时间实验名称文件操作同 组 人无预习报告(对实验主要内容的认识)得分 ...

  6. c语言文件和结构体,C语言 文件操作 结构体与文件 fgetc fputc fread fwrite

    #include #include /*C语言 将键盘输入的字符写入文件*/ int main(int argc, char* argv[]) { FILE *fp; //文件指针 char str1 ...

  7. 学生信息管理系统(C语言实现)——基于结构体和文件

         目录 题目描述 源码详解 完整源码 题目描述 学生信息管理系统用来管理学生信息,学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等.试设计一个学生信息管理系统,其至少 ...

  8. Android JNI编程(六)——C语言函数指针、Unition联合体、枚举、Typedef别名、结构体、结构体指针...

    版权声明:本文出自阿钟的博客,转载请注明出处:http://blog.csdn.net/a_zhon/. 目录(?)[+] 一:函数指针 1.函数指针顾名思义就是定义一个指针变量指向一个函数,和一级指 ...

  9. c语言中结构体头文件是什么,函数形参里有结构体指针,为什么在头文件生

    满意答案 lam950 2017.04.08 采纳率:59%    等级:8 已帮助:913人 C语言用结构体指针作函数参数 这种方式比用结构体变量作函数参数效率高,因为无需传递各个成员的值,只需传递 ...

最新文章

  1. 《网站分析师实战指南》一1.4 进入实战之路
  2. BJUI+SSM实现报表添加时间筛选功能
  3. 【规范】流程图的标准画法
  4. HDU Problem - 5971 Wrestling Match(染色)
  5. Iterator to list的三种方法
  6. resque java_php-resque :基于Redis的后台任务系统
  7. 安装redis,执行make test时遇到You need tcl 8.5 or newer in order to run the Redis test
  8. android radiogroup 底部菜单,Android底部菜单栏(RadioGroup+Fragment)美化
  9. 【转】Java 中正确使用 hashCode 和 equals 方法
  10. 转载:关于Windows Boot Manager、Bootmgfw.efi、Bootx64.efi、bcdboot.exe 的详解..
  11. python计算iv值_python计算IV值
  12. JS中的this指向
  13. 中文维基百科数据爬取与预处理
  14. 美国微软总部SDET实习面经
  15. Linux系统下的nobody用户与nologin
  16. 解决OBS无法使用窗口捕获以及显示器捕获的问题
  17. 第4期:大学生提前职业技能准备之一
  18. 富士胶片消毒喷雾及湿巾在日本证实可抑制新冠病毒感染
  19. ajax 随机,基于JQuery及AJAX实现名人名言随机生成器
  20. 视觉SLAM十四讲-高翔 第5讲 相机和图像

热门文章

  1. dnslog在mysql在linux_DNSlog实现Mysql注入
  2. php抓取新浪微博数据抓取,php利用curl抓取新浪微博内容示例
  3. mysql菜鸟教程update_PHP MySQL Update
  4. nvcc 已退出,返回代码为1
  5. StemBlock pytorch实现
  6. Hungarian method 匈牙利算法 解决指派问题
  7. vector 指针 的指针
  8. Rep Loss笔记
  9. concealing 706 DC, 706 AC, 706 MV errors in P frame
  10. 青龙羊毛——旅游链(搬运,非原创)