读书人

strtok循环体里嵌strcmp,该如何处理

发布时间: 2012-04-11 17:42:33 作者: rapoo

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

[解决办法]
探讨

没明白,麻烦解释下。
int main(int argc, char* argv[])
{
//911|1234|0010
char str[] ="";
char * pch;
printf ("Splitting string \"%s\" in tokens:\n",str);
pch = strtok (str,"|");
if(strcmp(pc……

[解决办法]
char str[] ="911|1234|0010";

pch = strtok (str,"|"); ==> 911<\0>1234|0010

pch = strtok (NULL, "|"); ==> 911<\0>1234<\0>0010

strtok 会修改原始字符串,使用 <\0> 把 原始串 截断了
这是要注意的
[解决办法]
探讨
同时也想请问一个问题:

C/C++ code

char *strWorkerTemp;
strWorkerTemp = (char*)malloc(20);
memset(strWorkerTemp,0, 20);


使用完后释放

C/C++ code

if(strWorkerTemp)
{
free(strWorkerTemp);
str……

[解决办法]
探讨

引用:

引用:
同时也想请问一个问题:

C/C++ code

char *strWorkerTemp;
strWorkerTemp = (char*)malloc(20);
memset(strWorkerTemp,0, 20);


使用完后释放

C/C++ code

if(st……

读书人网 >C++

热点推荐