Выполнение знака равенство в if(…)

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Fil
Сообщения: 41
Зарегистрирован: 30 авг 2006, 17:03

Привет.

Код: Выделить всё

SOCKET sock = (SOCKET)lpParam;
char szRecvBuff[1500];
int ret;

FILE *f_get, *f_set;

char szBuff[1500];
int nSendSize = 0;


//Запуск бесконечного цикла
while(1)
	{
	//Получение данных
	ret = recv(sock, szRecvBuff, 1500, 0);
	//Проверка полученных данных
	if(ret == 0)
		break;
	else
	if(ret == SOCKET_ERROR)
	{
		//MessageBox(0, "Recive data failed", "Error", 0);
		break;
	}
	
	//Проверка принятого текста в переменной szRecvBuff, 
	//в зависимости от текста следует действие
	szRecvBuff[ret] = '\0';
		
	if(szRecvBuff == "get")
	{
		…………………………………………
Не могу пройти этот if(szRecvBuff == "get")… вроде бы все одинаково и равенство должно выполняться, но «проскакивает» далее. В чем тут может быть дело?
Аватара пользователя
mc-black
Сообщения: 250
Зарегистрирован: 08 май 2008, 16:09
Откуда: Россия, Нижний Новгород
Контактная информация:

Так ведь строки char так не на C/C++ сравнивают. Есть strcmp или что-то вроде того.
На заказ: VBA, Excel mc-black@yandex.ru
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

szRecvBuff == "get" - это ты написал сравнение адресов. Адреса у переменной szRecvBuff и строки "get" действительно разные, так что ничего удивительного в том, что в if мы не заходим нет.

Чтобы сравнить не адреса, а то, что по этим адресам расположено, используй strcmp, strncmp, stricmp. Первая функция - просто сравнение, вторая - сравнение первых n символов, третья - case insensitive сравнение (то есть разница в регистре букв не учитывается).
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Fil
Сообщения: 41
Зарегистрирован: 30 авг 2006, 17:03

Спасибо, гаспода! Действительно лажанулся круто...сравнить адреса вместо строк. Пора отдохнуть.
Ответить