Файл a.txt нужно сравнить с файлом c.txt - C (СИ)
Формулировка задачи:
Всем привет!
Есть файл a.txt:
1
2
3
4
5
Есть файл c.txt:
2
3
Нужно создать файл b.txt такого типа:
1
4
5
И после этого нужно записать значения с файла b.txt в файл c.txt
Файл c.txt:
2
3
1
4
5
Жду ответа, заранее спасибо!
Решение задачи: «Файл a.txt нужно сравнить с файлом c.txt»
textual
Листинг программы
#include <stdio.h> #include <string.h> int main(void) { char tmp1[200], tmp2[200]; FILE *fa = fopen("a.txt", "r"), *fb = fopen("b.txt", "w"), *fc = fopen("c.txt", "r"); if (!fa || !fb || !fc) return 1; fscanf(fc, "%s", tmp2); while (!feof(fa)) { fscanf(fa, "%s", tmp1); if (strcmp(tmp1, tmp2) <= 0 || feof(fc)) { if (strcmp(tmp1, tmp2)) fprintf(fb, "%s\n", tmp1); } else if (!feof(fc)) fscanf(fc, "%s", tmp2); } fclose(fa); fclose(fb); fclose(fc); fb = fopen("b.txt", "r"), fc = fopen("c.txt", "a"); while (fscanf(fb, "%s", tmp1) != EOF && fprintf(fc, "\n%s", tmp1)); fclose(fb); fclose(fc); return 0; }
Объяснение кода листинга программы
- Открываются файлы 'a.txt', 'b.txt' и 'c.txt' для чтения и записи соответственно.
- Временные переменные tmp1 и tmp2 объявлены размером 200 символов.
- Программа считывает первую строку из файла 'c.txt' во временную переменную tmp2.
- В цикле while считываются строки из файла 'a.txt' и сравниваются со строкой из файла 'c.txt' во временной переменной tmp2.
- Если строка из 'a.txt' меньше или равна строке из 'c.txt' или достигнут конец файла 'c.txt', то эта строка записывается в файл 'b.txt'.
- Если строка из 'a.txt' больше строки из 'c.txt', то считывается следующая строка из 'c.txt' во временную переменную tmp2.
- В конце программы файл 'b.txt' открывается для чтения, а файл 'c.txt' открывается для добавления.
- Программа считывает все строки из файла 'b.txt' и записывает их в файл 'c.txt'.
- Файлы 'b.txt' и 'c.txt' закрываются.
- Результат работы программы 0, что означает успешное выполнение.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д