【发布时间】:2015-02-20 04:02:11
【问题描述】:
我有一些 C 代码,我想在 for 循环中将 ssid 与字符串“option”连接起来
void ApListCallback(ScanResult *pApList)
{
int i;
printf("Find %d APs: \r\n", pApList->ApNum);
for (i=0;i<pApList->ApNum;i++){
char *ssid=pApList->ApList[i].ssid;
char *temp=strcat(strcat("<option>",ssid),"</option>");
printf("=======%s=======\r\n",ssid);
printf("-------%s-------\r\n",temp);
strcpy(ApListCallbackSelectStr, temp);
}
printf("---%s--\r\n",ApListCallbackSelectStr);
}
我得到了结果:
找到 11 个 AP:
=======MODIM FASHION======= -------<option>------- ============== -------<option>------- =======360WiFi-6888======= -------<option>------- =======HAME_A5_037d======= -------<option>------- =======sweet baby======= -------<option>------- =======ringierguest======= -------<option>------- =======JIMMY 3G======= -------<option>------- =======MF70_9BC5E1======= -------<option>------- =======Bert-Co======= -------<option>------- ---<option>--
为什么函数 strcat 不起作用?
【问题讨论】:
-
你的预期输出是什么
-
你也不应该 printf
\r\n(除非你在 Unix 环境下运行时故意生成一个 windows 文本文件)。在 Windows 中,打印\n将导致文件包含\r\n。 -
循环的每次迭代都会调用
strcpy(ApListCallbackSelectStr,它会覆盖该缓冲区中的内容;所以这段代码的效果(如果固定的话)是打印出每个项目,然后打印最后一行两次;这真的是你想要的吗? -
@MattMcNabb 是的。你说的对。我需要使用
strcat而不是strcpy函数