strtok循环体里嵌strcmp
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
int main(int argc, char* argv[])
{
char str[] ="911|1234|0010";
char * pch;
printf ("Splitting string \"%s\" in tokens:\n",str);
pch = strtok (str,"|");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, "|");
if(strcmp(pch,"88888") == 0)
{
break;
}
}
return 0;
}
当中,运行到if(strcmp(pch,"88888") == 0)出现错误,请各位帮忙分析下
[解决办法]
- C/C++ code
#include <string>#include <stdio.h>int main(int argc, char* argv[]){ char str[] ="911|1234|0010"; char * pch; printf ("Splitting string \"%s\" in tokens:\n",str); pch = strtok (str,"|"); while (pch != NULL) { printf ("%s\n",pch); if(strcmp(pch,"88888") == 0) { break; } pch = strtok (NULL, "|"); } return 0;}
[解决办法]
pch = strtok (NULL, "|");
加这个貌似也抱错哇
还不如在strcmp在加个null判断呢
程序出错就是因为最后一次循环时pch已经是null
[解决办法]
[解决办法]
char str[] ="911|1234|0010";
pch = strtok (str,"|"); ==> 911<\0>1234|0010
pch = strtok (NULL, "|"); ==> 911<\0>1234<\0>0010
strtok 会修改原始字符串,使用 <\0> 把 原始串 截断了
这是要注意的
[解决办法]
[解决办法]