Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2010, 18:09   #1
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию проверка строки

Здравствуйте.

Код:
char a[10];
strcpy(a,"hello");
if (a == "hello"){printf("yes");}
Сравнение не дает положительного результата. Что может быть не так?
Артэс вне форума Ответить с цитированием
Старый 19.01.2010, 18:11   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сравниваются указатели а не сами строки.
strcmp вам нужно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 19.01.2010, 18:36   #3
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
сравниваются указатели а не сами строки.
strcmp вам нужно.
Либо посимвольно
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 20.01.2010, 02:11   #4
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

Спасибо. Такой вопросик, а что быстрее, посимвольно, или strcmp?
Артэс вне форума Ответить с цитированием
Старый 20.01.2010, 02:13   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

поидее strcmp
но разницы ощутимой быть не должно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.01.2010, 03:23   #6
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Цитата:
Либо посимвольно
или std::string и не морочить голову себе строками...
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
ISergeyN вне форума Ответить с цитированием
Старый 20.01.2010, 11:21   #7
nazavrik
Форумчанин
 
Аватар для nazavrik
 
Регистрация: 01.09.2008
Сообщений: 178
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
Спасибо. Такой вопросик, а что быстрее, посимвольно, или strcmp?
Определись, что тебе нужно. Strcmp сравнивает длины строк. Если тебе этого достаточно, то юзай её. Если нет, сравнивай посимвольно.

Можешь поискать что-нибудь еще из стандартных функций: тыц.
Быть радикальным - значит понять вещь в её корне. К.Маркс
nazavrik вне форума Ответить с цитированием
Старый 20.01.2010, 13:52   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Strcmp сравнивает длины строк.
и давно?
цитата с хелпа:
Цитата:
The strcmp function compares string1 and string2 lexicographically and returns a value indicating their relationship.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.01.2010, 16:55   #9
Артэс
Форумчанин
 
Регистрация: 05.06.2007
Сообщений: 529
По умолчанию

И еще вопросик, на счет производительности... все же

функция присоединения строк strcat(str,str1); конечно избавляет от лишней работы, сборки строки посимвольно в цикле... но не является ли это трудоемким? быстрее ли она работает, чем добавление по символьно в цикле? речь идет о строках-массивах, в которых может быть 10 тысяч символов и более...
например к строке длиной в 100 символов, присоединить строку длиной в 10000 символов и больше...

Последний раз редактировалось Артэс; 20.01.2010 в 16:57.
Артэс вне форума Ответить с цитированием
Старый 20.01.2010, 17:20   #10
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Артэс Посмотреть сообщение
И еще вопросик, на счет производительности... все же

функция присоединения строк strcat(str,str1); конечно избавляет от лишней работы, сборки строки посимвольно в цикле... но не является ли это трудоемким? быстрее ли она работает, чем добавление по символьно в цикле? речь идет о строках-массивах, в которых может быть 10 тысяч символов и более...
например к строке длиной в 100 символов, присоединить строку длиной в 10000 символов и больше...
Забудьте об этом, обычно библиотечные функции высокооптимизированы, редко приходится писать свои, специализированные, для поднятия производительности. Да и так ли принципиальны несколько лишних нано-, мили- секунд в данном случае? Не нужно браться за оптимизацию там, где это не принесёт ощутимых результатов, лучше оставьте более простой и читабельный код библиотечных функций. Тем более что strcat, с включёнными оптимизациями при компиляции едва ли выдаст код медленнее ручного сложения строк
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка строки SL1CK Общие вопросы C/C++ 4 08.06.2009 18:41
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Проверка строки на правильность данных haros Microsoft Office Excel 10 28.02.2009 16:39
C проверка размера строки challengerr Помощь студентам 2 04.08.2008 12:50
Проверка строки матрицы на симметричность. EVIL Помощь студентам 2 26.11.2007 23:23