Определить, имеются ли в списке книги, в названии которых встречается некоторое слово - C (СИ)
Формулировка задачи:
Здравствуйте, помогите разобраться. Только сел за си. Написал код но он неправильно работает.
Задача: В библиотеке имеется список книг. Каждая запись этого списка содержит фамилии авторов, название книг, год издания. Определить, имеются ли в данном списке книги, в названии которых встречается некоторое ключевое слово (например, "ПЭВМ"). Если имеются, то выдать на печать фамилии авторов, название и год издания всех таких книг.
Вот код:
Программа пропускает ввод строки.
#include <stdio.h>
#include <string.h>
struct spisok //объявление структуры
{
char Fam [20];
char Nazv[50];
char God[4]; //
};
struct spisok mas[30]; //объявление массива структур из 30 элементов
char Slovo[20];
signed int i,n;
main()
{
int n,k=-1;
while (k!=1)
{
n++;
puts("Введите фамилию автора");
gets(mas[n].Fam); //считывание строки
puts("Введите название книги");
gets(mas[n].Nazv);
puts("Введите год издания"); //вывод строки
scanf("%d",mas[n].God);
puts("0 - Продолжить ввод, 1 - Выход");
scanf("d",k);
printf("%s",mas[1].Fam,mas[1].Nazv,mas[1].God);
}
puts("Введите слово для поиска книги");
gets(Slovo);
clpscr();
for (int i=0;i<=n;i++)
{
if (strcmp(mas[i].Nazv,Slovo)==0);
printf("%d,%s,%s,%d\n",i,mas[i].Fam,mas[i].Nazv,mas[i].God);
puts("Книг с таким словом в названии нет\n");
scanf("%d",n);
}
}Решение задачи: «Определить, имеются ли в списке книги, в названии которых встречается некоторое слово»
textual
Листинг программы
if (strcmp(mas[i].Nazv,Slovo)==0) //нет ;
printf("%d,%s,%s,%d\n",i,mas[i].Fam,mas[i].Nazv,mas[i].God);
Объяснение кода листинга программы
- В условии используется функция strcmp, которая сравнивает строки.
- Если строки равны (strcmp возвращает 0), то выполняется действие, указанное после if, иначе выполняется действие, указанное после else.
- В действии после if происходит печать индекса i, фамилии автора, названия книги и года издания книги.
- Если условие if не выполняется, то выводится только номер книги.