работа с файлами

  • Автор темы AILEKCAHdP
  • Дата начала
A

AILEKCAHdP

#1
Oрганизовать меню: Создание файла, Просмотр файла, Поиск, Выход. В файле содержатся структуры со сведениями о книгах: автор, название, издательство, год издания. Вывести сведения о книгах, изданных не ранее 1990 года издательством «Знание».

Написал программу- файл создает и просмотр работает,а вот поиск никак
не хочет.Подскажите пожалуйста где ошибся. Подскажите как написать функцию которая выводит сведения о книгах, изданных не ранее 1990 года издательством "Знание".

Код:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include "locale.h"

struct Book
{
char Nazv[10],Autor[10],Izdatel[10];
int god;

}kniga;
void input();
void print();
void findbook();



int main()
{ 

char c = 'a';
while (c!='0')
{
puts("\n 1-novuy fail");
puts(" 2-prosmotr faila");
puts(" 3-poisk ");
puts(" 0-vyhod");
c = getch();
switch(c)
{
case '1':input(); break;
case '2':print();break;
case '3':findbook();break;
case '0':break;
default : puts("nevernuy regim");
}
}
}

void input()
{
char ch;
int res=0;
FILE *tf=fopen("file1.dat","wb");
printf("\n vvedite informaciu o knige \n");
do
{ 
printf("\n nazvanie: "); 
scanf("%s",&kniga.Nazv);
printf("\n avtor: "); 
scanf("%s",&kniga.Autor);
printf("\n izdatelstvo: "); 
scanf("%s",&kniga.Izdatel);
printf("\n god izdaniya: ");
scanf("%d",&kniga.god);
res = fwrite(&kniga,sizeof(kniga),1,tf);
printf("\n Zakonchity ? y/n");
ch=getch();

} while (ch != 'y');
fclose(tf);
}




void print()
{ 
int i; 
FILE *tf=fopen("file1.dat","rb");
i=1;
fread(&kniga,sizeof(kniga),1,tf);
printf("\n \tnazvanie	 \tavtor	\tizdatelstvo  \tgod");
while(!feof(tf))
{
printf("\n %3d \t%8s \t%6s \t%4s \t%15d ",i,kniga.Nazv,kniga.Autor,kniga.Izdatel,kniga.god);
fread(&kniga,sizeof(kniga),1,tf);
i++;
}
getch();
printf("\n");
fclose(tf);
}

void findbook()
{
char Book[10];
long int i;
FILE *tf=fopen("file1.dat","rb+");
puts(" Izdatelstvo: ");
scanf("%s",Book);
gets(Book);
fread(&kniga,sizeof(kniga),1,tf);
while (!feof(tf))
{
if (strcmp(kniga.Izdatel,Book)==0)
{
printf(" nazvanie %10s avtor %10s izdatelstvo %s god %d ",kniga.Nazv,kniga.Autor,kniga.Izdatel,kniga.god);
getch();			  
fread(&kniga,sizeof(kniga),1,tf);
}
fclose(tf);	 

}
}