首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

strtok函数的if跟else if的区别

2012-07-15 
strtok函数的if和else if的区别编写了如下一段代码,目的是读取一个文本文件,当某一行开头是“D-loop”或者是

strtok函数的if和else if的区别
编写了如下一段代码,目的是读取一个文本文件,
当某一行开头是“D-loop”或者是“d-loop”的进行一种处理
当某一行的首个字符串是数字的进行另一种处理。
现在发现如果else if语句改成 if后运行的时候就会出错,出错的地方在is_number函数
使用else if语句则正常,不知道什么原因,请大侠们给点评论,谢谢!
while ( fgets(buffer,sizeof(buffer),fp) != NULL )
{
token = strtok(buffer, " ");


if (!strcmp(token,"D-loop")||!strcmp(token,"d-loop"))
{
while (token != NULL)
{
printf("%s ",token);
token = strtok(NULL," ");
}
}
else if(is_number(token)) // 此处只能为else if 不能为 if,否则出错,原因未知!
{
while (token != NULL)
{
if (!is_number(token))
{
strncat(dna,token,10);
}
token = strtok(NULL, " ");
}
}

}

[解决办法]
is_number是根据token来判断的,在第一个if里面可能会改变token
[解决办法]

探讨
因为你前面已经
while (token != NULL)
{
printf("%s ",token);
token = strtok(NULL," ");
}
执行完之后 token已经成NULL了

[解决办法]
int is_number(char *str)
{
char *p = str;
if(*p == NULL || *p == '\0') //这句崩溃
}

p = null; *p直接崩

热点排行