Нужно дополнить код, чтобы программа считывала несколько строк в текстовом файле - 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;
}
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с файлами и строками.
- Определение разделителя.
- Реализация функции замены подстроки в строке.
- Открытие входного и выходного файлов на чтение и запись соответственно.
- Проверка на успешное открытие файлов.
- Создание временной переменной для хранения строки при разборе строки на токены.
- Разбор строки на токены с помощью функции strtok.
- Запись каждого токена в выходной файл с добавлением пробела в конце.
- Закрытие файлов.
- Вывод сообщения об успешном выполнении программы.
- Возврат значения 0, указывающего на успешное выполнение программы.