Поиск слов в файле по первой букве. Нужно добавить вывод результатов в файл - C (СИ)

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

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

На консоль все выводится. Но вот реализовать в данном случае вывод результатов поиска еще и в текстовый файл у меня не получается. Помогите, пожалуйста, если не трудно.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
int main(void)
{
    setlocale(0, "Russian");
    char str[1000];
    char *word;
    char buk;
    FILE *fid, *fid2;
    errno_t err;
 
    if ((fopen_s(&fid, "D:\\data.txt", "r")) ||
        (err = fopen_s(&fid2, "D:\\data2.txt", "w")) != 0)
    {
        printf("\n\t Файл не может быть открыт.\n ");
        printf("\nНажмите любую клавишу: ");
        _getch();
        return 0;
    }
    fopen_s(&fid, "D:\\data.txt", "r");
    fgets(str, 1000, fid);
    fputs(str, stdout);
    word = strtok(str, "\n\t ,.!?'()\r");
    printf("\n\n Введите латинскую букву   ");
    buk = getchar();
    puts("\n\n Найденные слова:\n");
        while (word)
    {
        if (word[0] == buk)
            puts(word);
        word = strtok(NULL, "\n\t ,.!?'()\r");
    }
    fclose(fid);
    fclose(fid2);
    
    printf("\n Поиск окончен. Нажмите любую клавишу: ");
    _getch();
    return 0;
}

Решение задачи: «Поиск слов в файле по первой букве. Нужно добавить вывод результатов в файл»

textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
 
int main(void)
{
    setlocale(0, "Russian");
    
    char str[1000];
    char *word;
    char buk;
    FILE *fid, *fid2;
    errno_t err;
    if ((fopen_s(&fid, "D:\\data.txt", "r")) ||
        (err = fopen_s(&fid2, "D:\\data2.txt", "w")) != 0)
    {
        printf("\n\t Файл не может быть открыт.\n ");
        printf("\nНажмите любую клавишу: ");
        _getch();
        return 0;
    }
    fgets(str, 1000, fid);
    fputs(str, stdout);
    word = strtok(str, "\n\t ,.!?'()\r");
    printf("\n\n Введите латинскую букву   ");
    buk = getchar();
    puts("\n\n Найденные слова:\n");
    while (word)
    {       
        if (word[0] == buk)
 
        {
            printf("\n %s", word);
            fprintf(fid2, "\n %s", word);
        }
        
            word = strtok(NULL, "\n\t ,.!?'()\r");
    }   
    fclose(fid);
    fclose(fid2);
    printf("\n\n Поиск окончен. Нажмите любую клавишу: ");
    _getch();
    return 0;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Устанавливается русская локаль
  3. Объявляются и инициализируются переменные:
    • str - массив символов для чтения строки из файла
    • word - указатель на строку, которая будет обрабатываться
    • buk - символ, который будет использоваться для поиска
    • fid и fid2 - указатели на файлы
    • err - переменная для хранения кода ошибки
  4. Проверяется возможность открытия файлов. Если открытие не удалось, выводится сообщение об ошибке и программа завершается
  5. Считывается первая строка из файла в массив str
  6. Выводится содержимое str на экран
  7. word устанавливается равным первому слову в str, разделенному по пробелам
  8. Пользователю предлагается ввести латинскую букву для поиска
  9. В цикле while находятся все слова, начинающиеся с введенной буквы
    • Если слово начинается с введенной буквы, оно выводится на экран и записывается в файл
  10. Файлы закрываются
  11. Выводится сообщение о завершении поиска и просьба нажать любую клавишу
  12. Программа завершается

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


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

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

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