Страница 1 из 1

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

Добавлено: 12 май 2009, 12:06
Fil
Привет.

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

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")… вроде бы все одинаково и равенство должно выполняться, но «проскакивает» далее. В чем тут может быть дело?

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

Добавлено: 12 май 2009, 12:13
mc-black
Так ведь строки char так не на C/C++ сравнивают. Есть strcmp или что-то вроде того.

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

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

Чтобы сравнить не адреса, а то, что по этим адресам расположено, используй strcmp, strncmp, stricmp. Первая функция - просто сравнение, вторая - сравнение первых n символов, третья - case insensitive сравнение (то есть разница в регистре букв не учитывается).

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

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