Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 26.03.2014, 20:54   #1
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
Репутация: 34
По умолчанию оператор ==

Код:
function(char*name,char**FIO)
{
	if((char*)FIO==name) 
	if((char**)&name[0]==&FIO[0])
}
проверял printfом name и FIO одинаковые значения. Но if всегда fallse
Почему оператор сравнения это не понимает?
он не может такие типы данных сравнивать?

Последний раз редактировалось alekopoko; 26.03.2014 в 20:59.
alekopoko вне форума   Ответить с цитированием
Старый 26.03.2014, 21:26   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,840
Репутация: 6850
По умолчанию

Я не большой спец по разименовыванию в Си, но память подсказывает что == не умеет сравнивать строки. Так что используй лучше strcmp()
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 26.03.2014, 21:55   #3
Streletz
Профессионал
 
Регистрация: 03.01.2014
Сообщений: 2,676
Репутация: 1095
По умолчанию

А, если попробовать вот так?
Код:
if((*FIO==name)
В помощь:
Указатели в C++
Streletz вне форума   Ответить с цитированием
Старый 26.03.2014, 22:41   #4
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
Репутация: 34
По умолчанию

Код:
if((*FIO==name)
так не годится
Код:
*FIO
а у меня тип данных char** , т.е. вот это - char*FIO[10];
FIO разыменовывается либо так &FIO[i] ,либо так (char*)FIO

мне нужно каждый элемент символьного массива указателей проверять на равенство с символьным указателем,равенство тру, вернул нужный индекс
насколько я понял провернуть эту операцию с помощью операторов if и == нельзя(ну если перезагрузить оператор ==,может можно)

я думал что оператор == может сравнивать это,а оказалось нет.
с strcmp все окей.

Код:
function(char*name,char**FIO)
{
	int i=0;
	for( ;strcmp((char*)FIO,name)!=0;i++) ++FIO;
	return i;
}

Последний раз редактировалось alekopoko; 26.03.2014 в 22:49.
alekopoko вне форума   Ответить с цитированием
Старый 26.03.2014, 22:47   #5
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,840
Репутация: 6850
По умолчанию

Цитата:
ну если перезагрузить оператор ==,может можно)
По-моему для string он как раз перегружен.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 26.03.2014, 22:48   #6
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
Репутация: 34
По умолчанию

сравнить char** с char* оператором == нельзя,даже с явным приведением типа . Получается так

Последний раз редактировалось alekopoko; 26.03.2014 в 22:54.
alekopoko вне форума   Ответить с цитированием
Старый 26.03.2014, 22:57   #7
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,840
Репутация: 6850
По умолчанию

Ну да )
Это же не паскаль.
А почему string не хочешь использовать? Или нужно классическое Си?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 26.03.2014, 23:07   #8
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
Репутация: 34
По умолчанию

мне кажется когда я пишу на классическом Си, я лучше понимаю структуры данных(списки,хэш-таблицы,деревья) чем если бы я писал это все на Си++
Насколько я понял в Си++ много делается без моего ведома,само делается.А на Си я вручную каждую деталь прописываю сам и код более развернутый и большой, чем на Си++.
Может я ошибаюсь.

Последний раз редактировалось alekopoko; 26.03.2014 в 23:09.
alekopoko вне форума   Ответить с цитированием
Старый 26.03.2014, 23:11   #9
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,840
Репутация: 6850
По умолчанию

Цитата:
много делается без моего ведома
Это разве плохо? Ты едешь на авто, ты же не думаешь как там поживает пружина клапана второго цилиндра? Ты просто едешь, обьезжая кочкоямы не задумываясь о том как твой железный бизон поглощает горючку
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 26.03.2014, 23:21   #10
alekopoko
Форумчанин
 
Регистрация: 03.04.2013
Сообщений: 167
Репутация: 34
По умолчанию

Цитата:
Это разве плохо?
плохо.Потому что,то что делается без моего ведома,вдруг это даст сбой,то как я его исправлю(изменю код,по свои нужды) ?если не знаю как там внутри что происходит, то точно не исправлю.
если машина сломается,то тыж ее не починешь? так и тут.
Ну может я чушь несу) машина и программирование слишком разные примеры)
alekopoko вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Условный оператор,оператор цикла и массив Klark73 Microsoft Office Excel 1 19.12.2011 17:09
Оператор выбора или условный оператор[Перенесено из JavaSE] merhaba1992 Помощь студентам 1 20.01.2011 18:06
Условный оператор. Оператор выбора. Pascal Сержuk Помощь студентам 4 17.11.2010 13:50
Вычислить используя, оператор цикла for и оператор безусловного пе Knubbe Помощь студентам 1 18.12.2009 11:24


08:50.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.