Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
 Аватар для IP_TCP
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108

Сравнить два текстовых файла

07.10.2019, 23:17. Показов 3609. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Пишу функцию, для сравнения двух файлов. В цикле while ошибка: не могу считать данные из файла(делал проверку на один файл - всё работает). Плиз, поправьте мою функцию или напишите свой вариант, потому как, те примеры, которые я нашел не работают с моей функцией. Благодарю.


Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
bool CompareStringOfFile(const string& str, const string& str2)
{
    ifstream fs1(str), fs2(str2);
    fs1.open(str);
    fs2.open(str2);
 
    string temp1, temp2;
    size_t _count = 0;
 
    if (!fs1.is_open() || !fs2.is_open())
    {
        cerr << "Doesn't open the file\n";
        EXIT_FAILURE;
    }
    else
    {
        while (!fs1.eof() || !fs2.eof())
        {
            getline(fs1, temp1);
            getline(fs2, temp2);            
        }
    }
    if (temp1 > temp2)
    {
        cout << "temp1 > temp2";
        return true;
    }
    else if (temp1 == temp2)
    {
        cout << "Equal\n";
        return false;
    }
    return false;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.10.2019, 23:17
Ответы с готовыми решениями:

Как сравнить два текстовых файла?
Скажите пожалуйста как сравнить два тхт являются ли их содержания одинаковыми? И если нет то показать где именно ошибка на 3 м тхт файле. ...

Сравнить 2 текстовых файла и вывести количество правильных ответов
В 1 файле имеется строка состоящая из цифр. Цифры- это номера ответов. Во 2 файле записана правильная последовательность ответов....

Сформировать два текстовых файла из целых чисел. Записать в третий файл минимальный элемент первого файла и максимальный элемент второго файла
Тема: работа с текстовыми файлами с использованием стандартных функций библиотеки stdio.h Нужно составить программу: Сформировать два...

14
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.10.2019, 23:29
Лучший ответ Сообщение было отмечено IP_TCP как решение

Решение

IP_TCP, вместо 1 while напишите 2 while (отдельно для 1 файла, отдельно для 2 файла), а также добавьте в сравнение условие temp2 > temp1;

строки 4-5 и строку 8 уберите
1
 Аватар для IP_TCP
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
07.10.2019, 23:34  [ТС]
Yetty, Спасибо. 8 строка - да(я счетчиком проверял одно решение). А вот 4,5 почему не нужны? Я их убрал и все заработало.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.10.2019, 23:38
Цитата Сообщение от IP_TCP Посмотреть сообщение
Я их убрал и все заработало.
просто Вы совместили 2 варианта. я могу ошибаться, но по-моему у Вас будут сравниваться 2 последние строки файлов, проверьте.
1
 Аватар для IP_TCP
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
07.10.2019, 23:46  [ТС]
Yetty, да, так и есть. Мое почтение.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
07.10.2019, 23:53
IP_TCP, попробуйте вместо цикла while такую запись getline (fs1, temp1, '\0' );
1
 Аватар для IP_TCP
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
08.10.2019, 00:03  [ТС]
Yetty, Помогло, а то получалось, что он затирал предыдущую строку.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.10.2019, 00:17
IP_TCP, вот-вот. и ещё момент. наверное сделайте такие 2 проверки (>= это true) и (< это false) и все cout лучше убрать - обычно в функции bool их не располагают
1
 Аватар для IP_TCP
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
08.10.2019, 00:18  [ТС]
Yetty,
Кликните здесь для просмотра всего текста

Напишите программу, которая открывает два текстовых файла для ввода и
один для вывода. Программа должна соединять соответствующие строки
входных файлов, используя в качестве разделителя пробел, и записывать
результаты в выходной файл. Если один файл короче второго, остальные строки более
длинного файла также должны копироваться в выходной файл. Например,
предположим, что первый входной файл имеет следующее содержимое:
eggs kites donuts
balloons hammers
stones
А второй файл —
такое:
zero lassitude
finance drama
Результирующий файл должен выглядеть следующим образом:
eggs kites donuts zero lassitude
balloons hammers finance drama
stones

Еще не понял пока. cout были для проверки.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.10.2019, 00:31
if (temp1 == temp2) return true;
return false;

Добавлено через 7 минут
IP_TCP, если такое условие, то что выше, Вам не подойдёт (разве что оставить для сравнения файлов - и то не уверен, нужно ли оно Вам вообще в этой задаче). придётся построчно считывать.

и сравнивать нужно не файлы, а количество строк в файлах.
1
 Аватар для IP_TCP
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
08.10.2019, 00:35  [ТС]
Yetty, Так, это не все решение. Функция лишь будет сравнивать два файла. А в main уже компоновать третий файл. Я просто решил разбить задачу, потому что пока не до конца понимаю, как ее решить.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.10.2019, 00:42
Цитата Сообщение от IP_TCP Посмотреть сообщение
Функция лишь будет сравнивать два файла.
IP_TCP, зачем их сравнивать ? первый файл может быть больше, но состоять из 2 строк, а второй меньше, но состоять из 5 строк, понимаете ?
0
 Аватар для IP_TCP
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
08.10.2019, 00:58  [ТС]
Yetty, Сейчас, когда Вы написали - понятно. Меня видимо сбила эта фраза "Если один файл короче второго"
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
08.10.2019, 01:11
IP_TCP, типичная ошибка авторов - условие не пишется, а пишется что-то на своей волне зря всё делали -
единственная польза - что Вы получили какую-то инф (которая правда непосредственно к задаче не относится)

возможно кто-то предложит алгоритм получше, можете пока подумать над такими набросками:
- найти количество строк в файле, где строк меньше: n
- сделать цикл for от 1 до n, в нём:
getline(fs1, temp1);
out << temp1 << " ";
getline(fs2, temp2);
out << temp2 << "\n";
- для большего файла сделать цикл for от n+1 до m
0
 Аватар для IP_TCP
7 / 6 / 2
Регистрация: 19.08.2018
Сообщений: 108
08.10.2019, 01:22  [ТС]
Зря я написал, что понял. В задаче нет сравнения строк. Там написано, " Программа должна соединять соответствующие строки входных файлов".

Добавлено через 5 минут
Yetty, Это Прата. Либо его переводят плохо, либо я понимаю его хр...во). Польза от написания функции, для сравнения двух файлов - бесценна.
возможно кто-то предложит алгоритм получше, можете пока подумать над такими набросками:
- найти количество строк в файле, где строк меньше: n
- сделать цикл for от 1 до n, в нём:
getline(fs1, temp1);
out << temp1 << " ";
getline(fs2, temp2);
out << temp2 << "\n";
- для большего файла сделать цикл for от n+1 до m
щас, попробую так сделать, как Вы предлагаете
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.10.2019, 01:22
Помогаю со студенческими работами здесь

Сравнить два файла на эквивалентность
int main{ FILE *inputFile1 = fopen(&quot;имя файла&quot;, &quot;r&quot;); if (inputFile1==NULL){ printf(&quot;happy end&quot;); } FILE *inputFile2 = fopen...

Сравнить два любых файла на С++
В общем задача такая: Надо сравнить два любых файла(ехе, doc, pdf) - и вывести сообщение: а) если они различаются - то место(номер)...

Содержат ли два заданных текстовых файла одинаковые множества символов или нет?
Составить описание функции, которая проверяет содержат ли два заданных текстовых файла одинаковые множества символов или нет.

Имеются два текстовых файла с одинаковым числом строк. Выяснить совпадают ли их строки
Срочно до утра нужно построить несколько алгоритмов на С++. Кто может помогите! Вот задания: 3.Имеются два текстовых файла с одинаковым...

Сравнить содержание двоих текстовых файлов и вывести на экран номера строк в каких есть отличия
Помогите пожалуйста!! Не могу никак сделать задачу:cry: Не могу даже листинг нормально написать, раз 20 переписывал все по новой, все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru