编的是职工工资管理系统。。。
void delete()
{int j,i;
printf("请输入要删除的职工姓名:");
scanf("%s",worker_name);
for(i=0;i<numberTemp;i++)
{if(strcmp(worker_name,wo[i].name)==0)
{for(j=i;j<numberTemp;j++)
{wo[j]=wo[j+1];}
numberTemp--;}
}
save();
printf("删除成功!");}
我也这样想过,不知道怎么实现。。
追答给了你一个保存删除数据的示例,你看一下
下次恢复的时候可以另写一个函数,将temp.dat文件中删除的数据读入,然后添加到你的信息数据结构里就行了。
void delete()
{
int j,i;
/*增加文件结构指针*/
FILE *fp_save;
/*增加临时变量,用于保存被删除的数据*/
/*ELEMTYPE为你采用的变量类型*/
ELEMTYPE temp;
printf("请输入要删除的职工姓名:");
scanf("%s",worker_name);
for(i=0; i<numberTemp; i++)
{
if(strcmp(worker_name,wo[i].name)==0)
{
/*保存即将删除的元素*/
temp=wo[i];
/*以二进制追加的方式打开文件temp.dat*/
if((fp_save=fopen("temp.dat","ab"))==NULL)
{
printf("文件打开失败");
return ;
}
/*将删除的元素以二进制形式写入文件*/
fwrite(&temp,sizeof(ELEMTYPE),1,fp_save);
/*关闭文件*/
fclose(fp_save);
for(j=i; j<numberTemp; j++)
{
wo[j]=wo[j+1];
}
numberTemp--;
}
}
save();
printf("删除成功!");
}
能否把恢复函数也写下,我试过了,可是无法实现功能。
追答我写了个恢复的原理示例,你参考一下:
#define N 100
void recover()
{
FILE *fp_recover;
ELEMTYPE temp[N];
int i=0;
/*以二进制读的方式打开临时文件*/
if((fp_recover=fopen("temp.dat","rb"))==NULL)
{
printf("文件打开失败");
return ;
}
/*将所有的临时文件中的数据读入temp数组*/
while(!eof(fp_recover))
{
fread(temp[i++],sizeof(ELEMTYPE),1,fp_recover);
}
fclose(fp_recover);
/*接下来你可以将temp数组中的所有数据或部分
数据复制到你的wo数组*/
/*如果需要保持wo数组有序,可以用边读入边插入
的方式排序(插入排序),
也可以全部插入后,再整体排序*/
printf("恢复成功!");
}
好了好了!哈哈!太谢谢了,虽然是一个小问题,感觉还是学到不少东西!哈哈!太开心了!
谢谢,谢谢!
如何用c语言实现删除文件中指定的数据;例如
1、首先我们输入【deleteScore】函数,先看整体代码,再一一解释。2、在接下来我们输入永久循环语句。3、再接下来,我们选择操作删除的方式。4、再接下来我们就可以调用删除的函数了。注意事项:C语言提供了许多低级处理的功能,并仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式...
c语言删除文件中的指定的一行数据怎么做
一般有两个方法实现这个功能:1.把要保留的内容写到另一个文件中,要删掉的内容就不用写了。2.把要保留的内容存储到一个字符串变量中,要删掉的内容不用存储,最后把这个字符串再写回到原文件中覆盖原来的内容。例程:include<stdio.h>struct data{ int bianhao; char fenlei[10]; char ...
c语言编程中怎么实现数据的覆盖!
用读写r+ 或 w+ 方法打开。if((fp=fopen("USER.txt","r+"))==NULL)任何时候想回到文件一开始,就用回绕函数:rewind(fp);这样再写就覆盖了。"a" 打开来 是 从文件尾开始添加新内容。
C语言编写函数,从一个排好序的整型数组中删去某数
include <stdio.h>void deletex(int a[],int &n,int x){int i; for(i=0;i<n&&a[i]<x;i++); if(i==n||a[i]>x) {printf("fail!\\n"); return;} for(;i<n;i++)a[i]=a[i+1]; n--; for(i=0;i<n;i++) printf("%d ",a[i]); printf("\\n"); }int...
C语言的删除函数
void main (){
c语言编程 将字符串中的数字删除后输出
1、 定义删除前部数字字符的函数delHead()。2、定义到函数的头文件,因为用到了strlen(),因而必须引用string.h:3、定义删除尾部数字字符的函数delTail()。4、定义运行的主函数,如下图所示。5、运行该程序,程序运行结果如下图所示。
c语言编程:”这个文件已在资源编辑器外被修改,你要重新载入它吗?”点...
你点“是”的那一瞬间原文档的修改就已经被外部的修改覆盖了,也就是没办法复原了。所以你现在只能重新写一遍。在编程过程中,修改或更新的时候,要养成随时备份的好习惯哦,可以避免不必要的损失。
用C语言写一个删除学生信息的程序。(要求有删除的函数)。
\/\/9.按学号删除学生信息 int student_delete_num(int n) { int nums; int result; printf("请输入待删除的学生学号:"); scanf("%d",&nums); result= -1; for (i = 0; i<n; ++i) { if (nums == num[i]) { result = i; break; } } \/\/最后判断q值 if (result == -1) { printf...
c语言中如何对文件的部分内容删除
1、建立一个.c或者.cpp文件,还要建立一个.txt文件进行操作处理,并且写上c语言的编译预处理,头文件,主函数。2、定一个文件指针,具体格式FILE*指针名。3、调用fopen函数,对具体的格式为 文件指针=fopen("文件路径+文件名","读写方式");。4、对于读写的方式有很多,比如r是只读,w是打开文件...
c语言写的程序删除一个printf和加上是不一样的结果
这是因为删除一个printf之后程序无法输出或者缺少运行结果。C语言里printf是输出函数,它的功能就是在程序运行后输出结果,如果你删除了代码里的一个printf语句,程序的一些运行结果就不能输出,也就出现了c语言写的程序删除一个printf和加上是不一样的结果这种情况。使用printf函数不需要特殊的头文件名,...