Файл 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, что означает успешное выполнение.