Нужно дополнить код, чтобы программа считывала несколько строк в текстовом файле - C (СИ)

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

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

#include <stdio.h> 
#include <conio.h> 
#include <stdlib.h> 
#include <locale.h> 

int main() { 
 
setlocale(LC_CTYPE, "rus");
 
FILE *file, *file1;
file = fopen("file.txt", "r");
file1 = fopen("file2.txt", "w");
 
char *txt;
int i = 0, n = 100;
txt = (char*) malloc(n*sizeof(char));
fgets(txt, n, file);

while (txt[i] != '\0') {
    if (txt[i] == 'ь' && txt[i-1] == 'т') {
        txt[i] = 'я';
        txt[i-1] = 'с';
    }
    i++;
}
 
fputs(txt, file1);
fclose(file);
getch();
free(txt);
printf("Данные записаны");
 
return 0;
}
Входные данные: бить лить стелить спать Сейчас в файл записывается строка: бися лися стелися Нужно, чтобы чтение файла не заканчивалось на первой строке и результатом работы было: бися лися стелися спася

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

textual
Листинг программы
#include <stdio.h> 
#include <stdlib.h> 
#include <string.h>
#include <locale.h> 
 
#define DELIM " \n\t"
 
char* str_replace(char* str0, const char* str1, const char* str2)
{
    char *ptr;
    if (ptr = strstr(str0, str1)) strcpy(ptr, str2);
    return str0;
}
 
int main(void) 
{ 
    setlocale(LC_CTYPE, "");
    char buf[BUFSIZ];
 
    FILE *file, *file1;
    file = fopen("file.txt", "r");
    if (!file)
        return 1;
    file1 = fopen("file2.txt", "w");
    if (!file1)
        return 1;
 
    char *tmp;
    while (fgets(buf, BUFSIZ, file)) {
         for (char* ptr = strtok(buf, DELIM); ptr; ptr = strtok(NULL, DELIM)) 
            fprintf(file1,"%s ", str_replace(ptr, "ть", "ся"));
        fputc('\n', file1);
    }
 
    fclose(file);
    fclose(file1);
 
    printf("Данные записаны\n");
 
    return 0;
}

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

  1. Подключение необходимых библиотек для работы с файлами и строками.
  2. Определение разделителя.
  3. Реализация функции замены подстроки в строке.
  4. Открытие входного и выходного файлов на чтение и запись соответственно.
  5. Проверка на успешное открытие файлов.
  6. Создание временной переменной для хранения строки при разборе строки на токены.
  7. Разбор строки на токены с помощью функции strtok.
  8. Запись каждого токена в выходной файл с добавлением пробела в конце.
  9. Закрытие файлов.
  10. Вывод сообщения об успешном выполнении программы.
  11. Возврат значения 0, указывающего на успешное выполнение программы.

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


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

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

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