user-0 提问: 不能返回正确值，请帮忙看看！

回复:
user: user-0
content: 谢谢大家，终于解决了，一个是比较字符串是否相等，应该用strcmp，而不是==运算符，另外是调用时参数的设置要对。

user: user-1
content: return 1，你多加了对单引号

user: user-0
content: 就是从表格控件里获取账号 服务区，要将它转化为整数

user: user-0
content: 谢谢赵老师了，请帮我看看哪里出问题了，试了两天了

user: user-2
content: 理解和讨论之前请先学会如何观察！  计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 多用小脑和手，少用大脑、眼睛和嘴，会更快地学会编程！ 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步Debug版对应汇编一行！ 单步Debug版对应汇编千行不如单步Release版对应汇编一行！ 不会单步Release版对应汇编？在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有，然后在IDE中运行。（一般人我不告诉他！）  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。

user: user-0
content: void CrxmanagerDlg::OnBnClickedButtonAutologin() { 	// TODO: 在此添加控件通知处理程序代码 	vtLogInfo.clear(); 	TLOGININFO tLoginInfo; 	BOOL bRebf = FALSE; 	for (int niStartId = 0;niStartId < m_MyEditListCtrl.GetItemCount();niStartId++) 	{ 		BOOL bRef = FALSE; 		bRef = m_MyEditListCtrl.GetCheck(niStartId); 		if (bRef == TRUE) 		{ 			strcpy_s(tLoginInfo.szUserL, m_MyEditListCtrl.GetItemText(niStartId, 1)); 			strcpy_s(tLoginInfo.szPassWordL, m_MyEditListCtrl.GetItemText(niStartId, 2)); 			strcpy_s(tLoginInfo.szBigPartL, m_MyEditListCtrl.GetItemText(niStartId, 3)); 			strcpy_s(tLoginInfo.szServerL, m_MyEditListCtrl.GetItemText(niStartId, 4)); 			strcpy_s(tLoginInfo.szLineL, m_MyEditListCtrl.GetItemText(niStartId, 5)); 			strcpy_s(tLoginInfo.szRoleL, m_MyEditListCtrl.GetItemText(niStartId, 6));  			MyDbg("%d\n", GetServerID(tLoginInfo.szServerL)); 			tLoginInfo.niServer = GetServerID(tLoginInfo.szServerL); 			tLoginInfo.niLine = GetLineID(tLoginInfo.szLineL); 			tLoginInfo.niRole = GetRoleID(tLoginInfo.szRoleL); 			/*tLoginInfo.niLine = GetLineID(tLoginInfo.szLineL); 			tLoginInfo.niRole = GetRoleID(tLoginInfo.szRoleL);*/ 	 			/*MyDbg("%d,%d,%d\n", tLoginInfo.niServer, tLoginInfo.niLine, tLoginInfo.niRole); 			MyDbg*/("%s,%s,%s,%s,%s,%s\n", tLoginInfo.szUserL, tLoginInfo.szPassWordL, tLoginInfo.szBigPartL, tLoginInfo.szServerL, tLoginInfo.szLineL, tLoginInfo.szRoleL); 			vtLogInfo.push_back(tLoginInfo);  		}  	}  	  }

user: user-3
content: 楼主贴一下是怎么调用的

user: user-4
content: 比较字符串是否相等，应该用strcmp，而不是==运算符

user: user-0
content: 杀菜鸟的脑细胞了，就是要从字串返回个整数，想了好几种方法都不对，求大神指点！

user: user-3

user: user-0
content: int GetServerID( char  *szFuWu) { 	if (strcmp(szFuWu, "魔神")==0 ) 	{ 		return 1; 	} 	 	else if (strcmp(szFuWu, "狂龙降天") == 0) 	{ 		return  1; 	} 	else if (strcmp(szFuWu, "幻影密路") == 0) 	{ 		return  2; 	} 	 } 测试了还是不对，Game:幻影密路,1                                 Game:狂龙天降,1 返回值都为 1

user: user-0
content: int GetServerID( char  *szFuWu) {     if (szFuWu == "魔神") { return 1;  } else if (szFuWu == "龙争虎斗") { return 2; } else if (szFuWu == "冰宫") { return 3; } else if (szFuWu == "雪原") { return 4; } return 0; }

user: user-5
content: 引用 5 楼 qq423399099 的回复:字符串要用strcmp比较++

user: user-6
content: 参数使用 char const *, 比较实用 strcmp

user: user-7
content: 引用 6 楼 yuelengdihai 的回复:你代码每次都执行到return 0；这句  返回值都是0  else {   return 0; }  错了

user: user-7
content: 你代码每次都执行到return 0；这句  返回值都是0  else {   return 0; }

user: user-3
content: 字符串要用strcmp比较

user: user-3
content: if (szFuWu = "魔神") 这里少了一个=

user: user-0
content: int GetServerID( char  *szFuWu) {     if (szFuWu == "魔神") { return '1';  } else if (szFuWu == "龙争虎斗") { return 2; } else if (szFuWu == "冰宫") { return 3; } else if (szFuWu == "雪原") { return 4; } return 0; }

user: user-0
content: 写上了也没正确的返回值