2015-08-12 3 views
-1

Целью этого кода является сохранение информации о библиотечной карточке и поиск книг с использованием фамилии автора. Когда я ищу с использованием имени автора, он говорит «нет книг по этой фамилии автора». Ниже мой код. Что я здесь делаю неправильно?Семантическая ошибка в структурах

//Program to store Library card Information and search for record using last name 
#include<stdio.h> 

void search(struct lib_card *name) 

struct author 
{ 
    char fname[20]; 
    char lname[20]; 
}; 

struct pub_date 
{ 
    int day; 
    int month; 
    int year; 
}; 

struct lib_card //Structure declaration for storing Library card information 
{ 
    char title[80]; 
    struct author name; 
    struct pub_date date; 
}; 

void main() 
{ 
    struct lib_card card[2]; 
    int l; //l is a variable assigned for loop 
    for (l = 0; l < 2; l++) 
    { 
     printf("********Enter Library Card Information********\n"); 
     printf("Card # %d\n", l + 1); 
     printf("Enter Book Title:    "); 
     scanf("\n%[^\n]s", card[l].title); 

     printf("Enter Author's First name: "); 
     scanf("\n%s", card[l].name.fname); 

     printf("Enter Author's Last name: "); 
     scanf("\n%[^\n]s", card[l].name.lname); 

     printf("\nEnter Published date:\n"); 
     printf("\t\tdate(dd):"); 
     scanf("\n%d", &card[l].date.day); 

     printf("\t\tMonth(mm):"); 
     scanf("\n%d", &card[l].date.month); 

     printf("\t\t\Year(yy):"); 
     scanf("\n%d", &card[l].date.year); 
    } 

    search(card); //Structure's address is passed to search function 
} 

void search(struct lib_card *name) 
{ 
    char llastname[20]; 
    int l; 

    printf("\nEnter Author's Last name to search for books:"); 
    scanf("\n%[^\n]s", llastname); //Get author's last name to search the books 

    for (l = 0; l < 2; l++) 
    { 
     printf("%s\n", (name + l)->name.lname); 
     if ((name + l)->name.lname == llastname) 
     { 
      printf("%s\n", (name + l)->title); 
     } 
     else if (l == 1) 
     { 
      printf("\nNo books by this Author's Last name found"); 
     } 
    } 
} 
+1

Укажите ошибки, которые вы получаете при компиляции и запуске кода. – ojblass

+1

Вы пытались использовать отладчик или отладочную печать, чтобы найти ошибку? – user996142

+1

1) исправьте форматирование своего кода, чтобы его можно было прочитать, не превратив мозг в крендель, 2) использовать 'strcmp()' или что-то похожее на сравнение строк с NULL-концами, а не '=='. – twalberg

ответ

0

Это не правильный способ сравнения строк:

if ((name + l)->name.lname == llastname) 

Использование strcmp вместо

Смежные вопросы