Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DaisyRose
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 6
#1

Сравнение строк - C++

28.05.2013, 14:25. Просмотров 412. Ответов 3
Метки нет (Все метки)

Здравствуйте. Есть 2 файла содержимое которых нужно сравнить и вывести на экран не совпадающие строки. С считыванием строк вроде разобралась, а вот как сделать что бы он выводил несовпадающие строки... Можете помочь? даже хотя бы просто алгоритм подсказать
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
        FILE *oldf, *newf;//Указатели стаpого и нового файла
        char oldn[10], newn[10],//Имена файлов
        line1[100], line2[100], *p, *m;
        int  c1, c2, k, c;
        const char st=100;
        printf ( "Введите путь к 1-му файлу:" );
        scanf ( "%s", &oldn );
        printf ( "Введите путь ко 2-му файлу:" );
        scanf ( "%s", &newn );
        {
            if (( oldf = fopen (oldn, "r" )) != NULL )
            {
                {
                    for (p = line1; p-line1 < 100-1 && (c = getc(oldf)) != EOF; p++)
                        *p = c;
                    *p = '\0';
                }
                if ((newf = fopen (newn, "r" )) != NULL )
                {
                    for (m = line2; m-line2 < 100-1 && (c1 = getc(newf)) != EOF; m++)
                        *m = c1;
                    *m = '\0';
                }
                k=strcmp(line1,line2); //сравнение строк
                if (k==0)
                { }
                else
                {
                    printf ("line1=%s line2=%s", line1, line2);
                }
                fclose ( newf );
                fclose ( oldf );
            }
        }
    }
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2013, 14:25     Сравнение строк
Посмотрите здесь:

Сравнение строк - C++
#include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;fstream&gt; #include &lt;string&gt; #include &lt;stdlib.h&gt; #include...

Сравнение строк - C++
Доброго времени суток! Имеется задачка: для двух заданных строк символов вывести без повторений набор символов-цифр, не вошедших в обе...

Сравнение строк - C++
Объясните пожалуйста по какому способу строки сравниваются? А то я сравнивал так и не понял в чем состоит хитрость. Допустим пример...

Сравнение строк - C++
Написать программу, которая сравнивает строки не использую стандартную функцию strncmp. При чем рассматривается только kol-size_t maxlen...

сравнение строк - C++
Подскажите как сравнить std::string и char *array ? может нужно преобразовать к одному типу сперва или функция какая есть ?

Сравнение 2 строк - C++
сравнивать строки я умею тут вопрос немного в другом. по какому принципу определяет что ab больше ba все мы канешно понимаем алфавит и...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,186
Завершенные тесты: 1
28.05.2013, 15:26     Сравнение строк #2
А зачем читать посимвольно, если есть функция fgets()
C++
1
2
3
4
5
6
7
while(!feof(oldf) && !feof(newf))
{
    fgets(line1,99,oldf);
    fgets(line2,99,newf);
    if(strcmp(line1,line2)!=0)
        printf ("line1=%s line2=%s", line1, line2);
}
DaisyRose
0 / 0 / 0
Регистрация: 28.05.2013
Сообщений: 6
28.05.2013, 15:32  [ТС]     Сравнение строк #3
Цитата Сообщение от zss Посмотреть сообщение
А зачем читать посимвольно, если есть функция fgets()
я знаю. с циклами в С++ не умею нормально работать. раньше с делфи работала
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2013, 16:00     Сравнение строк
Еще ссылки по теме:

Сравнение строк - C++
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; using namespace std; int main(){ char s1,s2; ...

Сравнение строк - C++
Есть две стринговых строки которые нужно сравнить с учетом пробелов.Пробовал применять c_str() и использовать stricmp, но ничего не...

Сравнение строк - C++
Не прибегая к функциям сравнения строк, создайте программу, которая запрашивает у пользователя две строки и производит их сравнение,...

Сравнение 2-х строк S и s - C++
Заданы две строки S и s. Определить, является ли строка s префиксом, суффиксом, и тем, и другим или ни тем, ни другим для S. Строки S и s...


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

Или воспользуйтесь поиском по форуму:
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2013, 16:00     Сравнение строк #4
Так (2 пост) с gets() кривова-то будет работать. Если последние строки в файлах завершаются '\n', то лучше так сделать:
C++
1
2
3
4
5
6
7
8
9
while(1)
{
    fgets(line1, 100, oldf);
    if (feof(oldf)) break;
    fgets(line2, 100, newf);
    if (feof(newf)) break;
    if(strcmp(line1, line2) != 0)
    printf ("line1 = %sline2 = %s", line1, line2);
}
А если последние строки не завершать '\n', то неправильно сравнение может работать. Например, две одинаковые строки, но одна в конце файла, а другая нет. gets() добавит в одну строку '\n', а в другую нет, и сравнение покажет неравенство строк.
Yandex
Объявления
28.05.2013, 16:00     Сравнение строк
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru