Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сравнение строк txt файлов, выявление одинаковых строк 
:(
    Опции темы
xvr
Дата 30.11.2012, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(baldina @  30.11.2012,  12:19 Найти цитируемый пост)
ТС читает 8 символов (7 значащих), а сравнивает 6. 
поскольку число символов захардкодено,

Где? У него вроде обычные strcmp стоят, без ограничений на размеры строк

PM MAIL   Вверх
baldina
Дата 30.11.2012, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата(Veniamin @  29.11.2012,  18:00 Найти цитируемый пост)
char a[8]="Moscow", b[8]="London", c[8];

Цитата(Veniamin @  29.11.2012,  18:00 Найти цитируемый пост)
strcmp(a, fgets(c,8,f1))


PM MAIL   Вверх
tzirechnoy
Дата 1.12.2012, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: -1
Всего: 16



Да, что только не делают люди лишь бы юникс не учить.
PM MAIL   Вверх
volatile
Дата 1.12.2012, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(tzirechnoy @  1.12.2012,  12:52 Найти цитируемый пост)
лишь бы юникс не учить. 

а что, если __выучить юникс__,  строки сравнивать уже не придется?

PM MAIL   Вверх
tzirechnoy
Дата 1.12.2012, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: -1
Всего: 16



Если выучить юникс, то ответ на вопрос "как сравнить такие текстовые файлы" будет очевиден и не будет требовать двух страниц камментов.
PM MAIL   Вверх
baldina
Дата 1.12.2012, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



tzirechnoy, что за манера высказывать мнение, не вникнув в суть вопроса
PM MAIL   Вверх
xvr
Дата 2.12.2012, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(baldina @ 30.11.2012,  23:35)
Цитата(Veniamin @  29.11.2012,  18:00 Найти цитируемый пост)
char a[8]="Moscow", b[8]="London", c[8];

Цитата(Veniamin @  29.11.2012,  18:00 Найти цитируемый пост)
strcmp(a, fgets(c,8,f1))

'Читает 8 символов' - вижу, а 'сравнивает 6' - нет.

PM MAIL   Вверх
baldina
Дата 3.12.2012, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



я имел в виду "Moscow" и "London".
PM MAIL   Вверх
xvr
Дата 3.12.2012, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(baldina @ 3.12.2012,  10:24)
я имел в виду "Moscow" и "London".

Увы, strcmp будет сравнивать принимая во внимание длинну обоих входных строк. Так что "Moscow" не совпадет с "Moscow\n"  (равно как и London) smile 

PM MAIL   Вверх
baldina
Дата 3.12.2012, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



обеих  smile 
но совпадет с "Moscow"
а мы вообще о чем? )))))))))))

Добавлено через 1 минуту и 27 секунд
ЗЫ: если в одной строке 6 + 0, то сравнение на этом и закончится независимо от длины второй
PM MAIL   Вверх
xvr
Дата 3.12.2012, 17:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(baldina @  3.12.2012,  14:51 Найти цитируемый пост)
ЗЫ: если в одной строке 6 + 0, то сравнение на этом и закончится независимо от длины второй 

Неа. Сравнивать будет с учетом длинны обоих строк:
Код

#include <stdio.h>
#include <string.h>

int main()
{
 printf("%d\n",strcmp("Moscow","Moscow"));
 printf("%d\n",strcmp("Moscow","Moscow\n"));
}
Результат запуска -
Код

> ./a.out 
0
-1


PM MAIL   Вверх
baldina
Дата 3.12.2012, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



xvr, сравнение заканчивается. когда заканчивается одна из строк. 
точнее - когда символы не равны или закончилась одна из строк (любая!)

в нашем случае (второе сравнение) оно заканчивается потому что '\0' != '\n'

поглядите например на такой цикл 
Код

do {
        c1 = *pStr1++;
        c2 = *pStr2++;
        v = c1 - c2;
} while ((v == 0) && (c1 != '\0'));

PM MAIL   Вверх
xvr
Дата 4.12.2012, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(baldina @  3.12.2012,  18:43 Найти цитируемый пост)
в нашем случае (второе сравнение) оно заканчивается потому что '\0' != '\n'

Да, заканчивается. Но strcmp при этом не считает, что строки равны - та строка, которая закончилась, будет считаться меньше, чем та, которая еще не закончилась.
Так что в сравнение попадет 7 символов (6 символов из строки образца и завершающий 0 в ней, и 6 символов из считанной из файла строки и символ '\n'). Так что сравниваться будет 7 символов, а не 6. А этого достаточно, что бы "Moscow" и "Moscow\n" не совпали

Цитата(baldina @  3.12.2012,  14:51 Найти цитируемый пост)
а мы вообще о чем? )))))))))))

Мы вот об этом -

Цитата(baldina @  30.11.2012,  12:19 Найти цитируемый пост)
ТС читает 8 символов (7 значащих), а сравнивает 6. 
поскольку число символов захардкодено, все наши измышления мимо)) 


PM MAIL   Вверх
baldina
Дата 4.12.2012, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 15
Всего: 101



Цитата(xvr @  4.12.2012,  09:34 Найти цитируемый пост)
А этого достаточно, что бы "Moscow" и "Moscow\n" не совпали

да я и не говорил что они совпадут
говорил, что в сравнении будут участвовать 6 (значащих) символов, т.к. такова длина захардкоденных строк
все это было, естественно, в предположении, что строка в файле одна и никакого \n нет

ну вобщем мы поняли кто чего хотел сказать)
PM MAIL   Вверх
xvr
Дата 5.12.2012, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 35
Всего: 223



Цитата(baldina @  4.12.2012,  18:03 Найти цитируемый пост)
ну вобщем мы поняли кто чего хотел сказать)

Угу, консенсус  smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0551 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.