在比较两个字符串是否一致时,不能用字符串名称直接比较。因为那样比较的是字符串地址。
正确的方法应使用strcmp()函数。
例:
while (node != &head) { SockInfo = CONTAINING_RECORD(node, struct SocketInfo, Entry); if (strcmp(SockInfo->UserID, dstID) == 0) { SendDataLen = strlen(RecvBuffer) + 1; Forword = SendPacket(SockInfo, RecvBuffer, SendDataLen); SendDataLen = strlen(UserID) + 1; IDSend = SendPacket(SockInfo, UserID, SendDataLen); break; } node = node->next; }
strcmp()函数中的两个字符串等于0,则表示两个字符串相等。
另外需要特别注意,类似以上例子中在循环中寻找单一目标时要及时跳出,减少计算资源的浪费。