двусвязный список, удаление книг заданного автора
Добавлено: 08 июн 2010, 22:17
Необходимо разработать программу для создания и работы с двусвязным списком, состоящим из структур. Структура содержит название книги, автора, год издания.
Необходимо удалить книги заданного автора.
и проблема возникла с функцией удаления, вот что есть
помогите кто сможет...
Необходимо удалить книги заданного автора.
и проблема возникла с функцией удаления, вот что есть
Код: Выделить всё
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct bibl
{
char name[10];
char avtor[10];
int god;
} sp;
void input(FILE *);
void print(FILE *);
void app(FILE *);
void del(FILE *);
main()
{
char c;
FILE *tf;
while (1)
{
puts("\n MENU");
puts(" ++++++++++++");
puts(" 1-sozdanie spiska");
puts(" 2-prosmotr spiska");
puts(" 3-dobavlenie v spisok");
puts(" 4-poisk i ydalenie");
puts(" 0-vyhod \n");
c=getch();
switch(c)
{
case '1':input(tf); break;
case '2' :p rint(tf);break;
case '3':app(tf);break;
case '4':del(tf);break;
case '0':return 0;
default : puts("nevernuy regim!!!");
}
}
}
void input(FILE *tf)
{
char ch;
tf=fopen("file.dat","wb");
printf("\n vvedite informaciu o knige \n");
do
{
printf("\n nazvanie: "); scanf("%s",sp.name);
printf(" avtor: "); scanf("%s",&sp.avtor);
printf(" god izdania: "); scanf("%d",&sp.god);
fwrite(&sp,sizeof(struct bibl),1,tf);
printf("\n Zakonchity ? y/n");
ch=getch();
}
while (ch != 'y');
fclose(tf);
}
void print(FILE *tf)
{
int i;
tf=fopen("file.dat","rb");
i=1;
fread(&sp,sizeof(struct bibl),1,tf);
while(!feof(tf))
{
printf("\n (%d) nazvanie %s\n avtor %s ",i,sp.name,sp.avtor);
printf("\n god izdania:%d\n ",sp.god);
fread(&sp,sizeof(struct bibl),1,tf);
i++;
}
getch();
}
void app(FILE *tf)
{
char ch;
tf=fopen("file.dat","ab");
printf("\n vvedite informaciu o knige \n");
do
{
printf("\n nazvanie: "); scanf("%s",sp.name);
printf(" avtor: "); scanf("%s",&sp.avtor);
printf(" god izdania: "); scanf("%d",&sp.god);
fwrite(&sp,sizeof(sp),1,tf);
printf("\n Zakonchity ? y/n");
ch=getch();
} while (ch != 'y');
fclose(tf);
}
void del(FILE*tf)
{
... ?????????...
fclose(tf);
}