Найти в файле книги заданного автора и вывести их названые и год выпуска на экран - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем привет! Надо найти в файле книги заданного автора и вывести их названые и год выпуска на экран Вот что у меня получилось:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define FILE_NAME "system.dat"
#define N 3
 
void main()
{
    FILE *f;
    int i, year, cnt = 0;
    char book[50 + 1], lastName[25 + 1], temp[125 + 1];
 
    if( (f = fopen(FILE_NAME, "w+")) == NULL)
    {
        printf("Pomulka pru storenni faila %s\n", FILE_NAME);
 
        system("pause");
        exit;
    }
 
    printf("Fail %s stvoreno yspishno dl9 zapusy!\n\n", FILE_NAME);
    for(i = 0; i < N; i++)
    {
        printf("Knuzka N%d:\n", i + 1);
        printf("--------------------------------------------\n");
        printf("1. Vvedit nazvy: ");
        scanf("%s", &book);
        printf("2. Vvedit prizvushe avtora: ");
        scanf("%s", &lastName);
        printf("3. Vvedit rik vudannja: ");
        scanf("%d", &year);
        printf("--------------------------------------------\n\n");
 
        fprintf(f, "Knuzka N%d:\n", i + 1);
        fprintf(f, "--------------------------------------------\n");
        fprintf(f, "1. Prizvuzhe avtora: %s\n", lastName);
        fprintf(f, "2. Nazva knuzki: %s\n", book);
        fprintf(f, "3. Rik vudannja: %d\n", year);
        fprintf(f, "--------------------------------------------\n\n");
    }
 
    printf("Vvedit prizvuzhe avtora: ");
    scanf("%s", &lastName);
 
    rewind(f);
    while(!feof(f))
    {
        fscanf(f, "%s", &temp);
        if (cnt > 0)
        {
            fgets(temp, 100, f);
            printf("Nazva knuzki: %s\n", temp);
            fgets(temp, 100, f);
            printf("Rik vudannja: %s\n", temp);
            cnt--;
        }
        if (temp == lastName)
            cnt = 1;
    }
 
    fclose(f);
    system("pause");
}
Заполняется файл нормально, но результаты поиска не выводит Помогите, пожалуйста! Заранее спасибо!

Решение задачи: «Найти в файле книги заданного автора и вывести их названые и год выпуска на экран»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define FILE_NAME "system.dat"
#define N 3
 
void main()
{
    FILE *f;
    int i, year, cnt = 0;
    char book[50 + 1], lastName[25 + 1], temp[125 + 1];
 
    if( (f = fopen(FILE_NAME, "w+")) == NULL)
    {
        printf("Pomulka pru storenni faila %s\n", FILE_NAME);
 
        system("pause");
        exit;
    }
 
    printf("Fail %s stvoreno yspishno dl9 zapusy!\n\n", FILE_NAME);
    for(i = 0; i < N; i++)
    {
        printf("Knuzka N%d:\n", i + 1);
        printf("--------------------------------------------\n");
        printf("1. Vvedit nazvy: ");
        scanf("%s", book);
        printf("2. Vvedit prizvushe avtora: ");
        scanf("%s", lastName);
        printf("3. Vvedit rik vudannja: ");
        scanf("%d", &year);
        printf("--------------------------------------------\n\n");
        cnt++;
    
      
        fprintf(f, "%s", lastName);
        fprintf(f, "%s", book);
        fprintf(f, "%d", year);
        
       }    
    
 fseek(f,0,0);
    printf("Vvedit prizvuzhe avtora: ");
    scanf("%s", lastName);
 
    rewind(f);
    while(!feof(f))
    {
        fscanf(f, "%s", temp);
        if (cnt > 0)
        {
            fgets(temp, 100, f);
            printf("Nazva knuzki: %s\n", temp);
            fgets(temp, 100, f);
            printf("Rik vudannja: %s\n", temp);
            cnt--;
        }
        if (temp == lastName)
            cnt = 1;
    }
 
    fclose(f);
    system("pause");
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы