C언어 파일 내용 삭제 와 수정

djen10의 이미지

#include
#include
void Infoadd(); // 사용자 추가
void Infofind(); // 사용자 검색
void Infodel(); // 사용자 삭제
void Infocha(); // 사용자 변경

int main()
{
int sel;

printf("1. 추가 2. 검색 3. 삭제 4. 변경 : ");
scanf("%d", &sel);

switch(sel)
{
case 1:
Infoadd();
break;
case 2:
Infofind();
break;
case 3:
Infodel();
break;
case 4:
Infocha();
}

return 0;
}

void Infoadd()
{

int age;
int birth;
char name[20];
FILE *fp=fopen("bio.txt", "a+");


printf("이름:");
scanf("%s",name);
printf("나이:");
scanf("%d", &age);
printf("생년월일:");
scanf("%d", &birth);
getchar();
fprintf(fp,"%s %d %d", name, age, birth);
fputc('\n',fp);

}

void Infofind()
{
int age;
int birth;
char findname[20];
char comparename[20];
FILE *fp=fopen("bio.txt", "r+");

printf("이름 검색:");
scanf("%s", findname);

while(1)
{
fscanf(fp,"%s %d %d", comparename, &age, &birth);

if(feof(fp))
break;

if(!strcmp(comparename,findname))
{
printf("이름:%s\n", comparename);
printf("나이:%d\n", age);
printf("생년월일:%d\n", birth);
break;
}
}

}

void Infodel()
{
int age;
int birth;
char delname[20];
char comparename[20];
FILE *fp=fopen("bio.txt", "a+");

printf("삭제하고 싶은 이름:");
scanf("%s", delname);

while(1)
{
fscanf(fp,"%s %d %d", comparename, &age, &birth);

if(feof(fp))
break;
if(!strcmp(comparename,delname))
{
fputs(" ", fp);
}
}
printf("삭제가 완료되었습니다.");
}

void Infocha()
{
}

이런 코드인데
삭제 함수가 작동되지 않습니다.ㅠㅠ
그리고 저게 작동된다면 공백과 개행문자를 삭제하여 삭제한 티가 안나게 하고싶은데 어떡해야 할까요..
파일 내용을 수정하는 함수는 손을 못대겠습니다..ㅠㅠ

세벌의 이미지

fseek fread fwrite