A
AILEKCAHdP
Oрганизовать меню: Создание файла, Просмотр файла, Поиск, Выход. В файле содержатся структуры со сведениями о книгах: автор, название, издательство, год издания. Вывести сведения о книгах, изданных не ранее 1990 года издательством «Знание».
Написал программу- файл создает и просмотр работает,а вот поиск никак
не хочет.Подскажите пожалуйста где ошибся. Подскажите как написать функцию которая выводит сведения о книгах, изданных не ранее 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);
}
}