Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219

Сравнение строк в txt

09.08.2018, 11:02. Показов 1287. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди добрые помогите сравнить записи в двух текстовиках и вывести не совпадающие. Нашёл код но не сравнивает.
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
35
36
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
 
int main()
{
    int a = 0;
    char ch_1[20], ch_2[20];
    FILE *file_1;
    FILE *file_2;
 
    setlocale(LC_ALL, "russian");
 
    if((file_1 = fopen("f1.txt","r")) == NULL)
    {   printf("Error!!!"); return 1;   }
 
    if((file_2 = fopen("f2.txt","r")) == NULL)
    {   printf("Error!!!"); return 1;   }
 
 
    while(!feof(file_1) && !feof(file_2))
    {
        fgets(ch_1, 20, file_1);
        fgets(ch_2, 20, file_2);
        a++;
        if (strcmp(ch_1, ch_2))
        printf("\n Строка №%d в файлах различается\n",a);
    }
    printf("\n Завершение сравнения!!!\n");
    _getch();
    fclose (file_1);
    fclose (file_2);
return 0;
}
запись в файле вида
Code
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
00401DF7  |.  803D 44704000>CMP BYTE PTR DS:[407044],0
00401DFE  |.  53            PUSH EBX
00401DFF  |.  C745 A4 01000>MOV DWORD PTR SS:[EBP-5C],1
00401E06  |.  53            PUSH EBX
00401E07  |.  74 10         JE SHORT Print.00401E19
00401E09  |.  A1 24734000   MOV EAX,DS:[407324]
00401E0E  |.  890424        MOV SS:[ESP],EAX
00401E11  |.  E8 B9F8FFFF   CALL Print.004016CF
00401E16  |.  8945 A4       MOV SS:[EBP-5C],EAX
00401E19  |>  8D5D A8       LEA EBX,SS:[EBP-58]
00401E1C  |.  C745 A0 00000>MOV DWORD PTR SS:[EBP-60],0
00401E23  |>  8B4D A4       /MOV ECX,SS:[EBP-5C]
00401E26  |.  394D A0       |CMP SS:[EBP-60],ECX
00401E29  |.  0F8D F6010000 |JGE Print.00402025
00401E2F  |.  49            |DEC ECX
00401E30  |.  7E 12         |JLE SHORT Print.00401E44
00401E32  |.  E8 C9F8FFFF   |CALL Print.00401700
00401E37  |.  890424        |MOV SS:[ESP],EAX
00401E3A  |.  E8 FBF8FFFF   |CALL Print.0040173A
00401E3F  |.  A3 CC724000   |MOV DS:[4072CC],EAX
00401E44  |>  31FF          |XOR EDI,EDI
00401E46  |>  8B0D CC724000 |/MOV ECX,DS:[4072CC]                    ; |||
00401E4C  |.  8B04CD E47240>||MOV EAX,DS:[ECX*8+4072E4]              ; |||
00401E53  |.  85C0          ||TEST EAX,EAX                           ; |||
00401E55  |.  0F8E B9010000 ||JLE Print.00402014                     ; |||
00401E5B  |.  83F8 3C       ||CMP EAX,3C                             ; |||
00401E5E  |.  BA 3C000000   ||MOV EDX,3C                             ; |||
Добавлено через 19 минут
Вот ещё но как вывести номер не совпадающих строк
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
 
 
int  file_equal(const char* fn1, const char* fn2, 
                int* row, int* col) {
    FILE* fp1, *fp2;
    int   ch1, ch2, c, r;
 
    if((fp1 = fopen(fn1, "r")) == NULL)
        return 0;
    if((fp2 = fopen(fn2, "r")) == NULL) {
        fclose(fp1);
        return 0;
    }
 
    // ïîäñ÷¸ò ñòðîê è ñèìâîëîâ íà÷èíàåòñÿ ñ íóëÿ
    c = r = 0;
    while(1) {
        ch1 = fgetc(fp1);
        ch2 = fgetc(fp2);
        if(ch1 != ch2)
            break;
        else if((ch1 == '\n') && (ch2 == '\n')) {
            ++r;
            c = 0;
        } else if((ch1 == EOF) && (ch2 == EOF)) 
            return 1;
        ++c;
    }
    fclose(fp1);
    fclose(fp2);
 
    *row = r;
    *col = c;
    return 0;
}
 
 
 
 
int  main(void) {
    int err, row, col;
    err = file_equal("f1.txt", "f2.txt", &row, &col);
    if(err & 1)
        puts("Yes cmp files.");
    else
        printf("Not cmp: rows: %d, cols: %d\n", row, col);
    _getch();
    return 0;
 
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.08.2018, 11:02
Ответы с готовыми решениями:

Сравнение строк txt файлом
Здраствуйте, мне нужно сделать так чтобы: допустим создал 2 файла txt в 1-й записал Vasia,Petia а в другой вывел ответ кто больше...

Автоматическое сравнение строк в txt
Здравствуйте, есть потребность в таком инструменте: 1) Сравнение двух txt фалов, в каждом миллионы строк,типа. Файлы отсортированны...

Автоматическое чтение и сравнение строк в txt
Здравствуйте, есть такая необычная задачка: Есть три txt файла Файл Base1 -єталонный основной отсортированный список...

5
Модератор
 Аватар для D1973
9910 / 6447 / 2455
Регистрация: 21.01.2014
Сообщений: 27,365
Записей в блоге: 3
09.08.2018, 11:07
А так?
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
#pragma hdrstop
#include <Classes.hpp>
#include <memory>
#include <stdio.h>
#include <conio.h>
#include <locale.h>
//---------------------------------------------------------------------------
 
#pragma argsused
int main(int argc, char* argv[])
{
   setlocale(LC_ALL, "russian");
   std::auto_ptr<TStringList> F1 (new TStringList);
   F1->LoadFromFile("f1.txt");
   std::auto_ptr<TStringList> F2 (new TStringList);
   F2->LoadFromFile("f2.txt");
   if(F1->Count != F2->Count)
    {
      printf("\n В файлах разное количество строк!!!\n");
      getch();
      return 666;
    }
   for(int i = 0; i < F1->Count; i++)
    if(CompareText(F1->Strings[i], F2->Strings[i]) != 0)
      printf("\n Строка №%d в файлах различается\n", i + 1);
   printf("\n Завершение сравнения!!!\n");
   getch();
   return 0;
}
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,145
Записей в блоге: 3
09.08.2018, 11:08
Доброго, просто для интереса, какая задача стоит, что даст Вам разница строк?
0
09.08.2018, 11:10

Не по теме:

Цитата Сообщение от Dinkin Посмотреть сообщение
какая задача стоит
Школьная :D Осень скоро, переэкзаменовки начались...

0
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
09.08.2018, 12:56  [ТС]
посмотреть разницу между патченным файлом и не патченным где были изменения ))
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33372 / 21498 / 8234
Регистрация: 22.10.2011
Сообщений: 36,893
Записей в блоге: 12
09.08.2018, 14:37
Лучший ответ Сообщение было отмечено sarsmen как решение

Решение

sarsmen, ходи сюда, это то, что тебе нужно.

Код на Дельфи прилагается. Можешь использовать его, можешь перевести на Билдер, если времени свободного много.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.08.2018, 14:37
Помогаю со студенческими работами здесь

Считывание txt, разбиение строк, создание массива из результата, сравнение
На сервере есть txt со следующем содержанием: Вася | 09.02.2013 Петя | 09.04.2013 Гриша | 01.07.2013 ......... нужно...

Поиск строк в одном txt-файле и добавление этих строк в другой txt-файл
Добрый день! Помогите, пожалуйста, разобраться. У меня лог файл, из которого мне нужно получить строки, в которых содержится...

Чтение из файла 'New.txt', запись четных строк в '1.txt', а нечетных в '2.txt'
В общем все работает, но есть &quot;НО&quot;, иначе бы не открывал тему. Содержимое исходного файла: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2...

Вырезание строк из 1.txt, номера строк находятся в 2.txt
Суть такова: есть 2 файла ПРИМЕР 1: \684763137613131788184831538 \1587435121531185145 \dfgsdg46415315dsfg413ds1g ...

Функции работы со строками символов: определение размера строки, копирование строк, добавление строк, сравнение строк
На языке Ассемблер написать функции работы со строками символов: определение размера строки, копирование строк, добавление строк, сравнение...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru