PDA

Просмотр полной версии : strcmp не работает хотя слово есть


fire64
19.08.2009, 01:50
несмотря на то что в meseg содержится details strcmp его не находит



nNumRead = recvfrom(name_sock, msg, MAX_MSG, 0, (sockaddr *) &server_addr, &server_addr_size);


if(nNumRead<0)
{
printf("cannot receive data \n");
continue;
}

char meseg[100] = "";

for(int i = 4; i < nNumRead; i++)
{

sprintf(meseg, "%s%c",meseg, msg[i] );
}

printf("test %s\n", meseg );

if (!strcmp(msg, "details"))
{
printf ("A2S_INFO from %s\n", inet_ntoa(server_addr.sin_addr));
continue;
}

fker
19.08.2009, 03:10
strcmp, всего лишь сравнивает 2 строки
http://imglink.ru/pictures/19-08-09/823cdb9d2eb3ebd7ff07c027de04c254.jpg

тебе же нужно найти входит ли строка "details" в строку msg
думаю подойдет strstr
http://imglink.ru/pictures/19-08-09/0fbf427b046270587d48bc9024b09197.jpg

эдд: если не то нужно, извиняюсь

Jes
19.08.2009, 03:11
не находит тоесть вылетает исключение? или не выполняется if ?

ps: попробуй strcmp(msg, TEXT("details")) или "details" как отдельную перменную

pps: кстати да , нужно найти входит ли строка "details" в строку msg или сравнить их?

fker
19.08.2009, 03:17
Если нужно просто сравнить, то возможно в msg передается какой-то лишний символ,
например '\n'

fire64
19.08.2009, 10:49
fker, спасибо
использование strstr помогло