关于文件的操作~ 从文件中删除数据

来源:百度知道 编辑:UC知道 时间:2024/06/30 01:56:01
问题在下面的删除函数里,
#include <stdio.h>
#include <malloc.h>
#include <string.h>

struct person
{
char user[20];
//char myfriend[20];
}per;

FILE* openfile()
{

FILE *fp;
fp = fopen("file", "wb");

if (fp == NULL)
{
printf("找开文件失败\n");
return NULL;
}

else
fclose(fp);

return fp;

}

void AddNew(FILE *fp)
{
struct person *p;
fp = fopen("file", "a");
if (fp == NULL)
{
printf("找开文件失败\n");
return;
}

memset(&per, NULL, sizeof(per));

int a, i=0;
printf("你需要添加多少个用户?\n");
scanf("%d", &a);
while (i < a)
{
p = (struct person *)malloc(sizeof(struct person));
printf("请输入用户名\n");
scanf(&qu

#include <stdio.h>
#include <malloc.h>
#include <string.h>
#include <memory.h> // TC 2.0 应该是#include <mem.h>

void delet(FILE *fp)
{
int i=0;
char a[20];
struct person b[20];

memset(b, 0, sizeof(person) * 20);
printf("请输入你要删除的用户: \n");
scanf("%s", &a);

fp = fopen("file", "rb");
if (fp == NULL)
{
printf("找开文件失败\n");
return;
}

fread(&b, sizeof(struct person), 20, fp);//这里从文件中读出的数据放入数组中,
for(int k=0; k<20; k++) //为什么没完全读出文件中的数据?
printf("%s", b[k].user);

fclose(fp);

for(i = 0; i < 20; i++) //在数组中删除所以删除的数据
{
if (b[i].user == a)
{
for (int j=i; j<20; j++)
{
b[j] = b[j+1];
}

}

}

fp = fopen(&