char *token = "gkjsdhvcxvcvbcbcv"
char c[90];
strcpy(c, token);
c[sizeof(c)-1] = '\0';
char *broken = strtok(c, " ");
if (broken != NULL)
{
//Should not come here as there is no white space???
}
回答
您是否试图确定字符串中是否有空格?
如果是这样,那么解决方案是使用strchr()而不是strtok()。例如
if (strchr(c, ' ') == NULL) {
// string has no spaces
} else {
// string has at least one space
}
如果你想要来标记字符串仅如果字符串包含至少一个分隔符,那么你需要同时使用,和strchr()&的strtok():
char *broken = NULL;
if (strchr(c, ' ') != NULL)
broken = strtok(c, " ");
字符串本身在没有分隔符的情况下是第一个标记。
如果您尝试打印broken
,我想您会看到这种情况。
如果您希望在某个字符串缺少特定字符时未执行一段代码,则应该使用strstr
或strchr
进行测试。
你得到第一个令牌,它是整个字符串。第二次调用将返回NULL,因为没有更多标记:
char *token = "gkjsdhvcxvcvbcbcv"
char c[90];
strcpy(c, token);
c[sizeof(c)-1] = '\0';
char *broken = strtok(c, " ");
if (broken != NULL) {
// Will come in here, broken == c.
}
broken = strtok(NULL, " ");
if (broken != NULL) {
// Won't come in here.
}
strtok将输入字符串分割为由输入分隔符分割的较小字符串。由于没有空格,它会返回整个字符串。
事情会出错,上面的代码:
- 没有使用至少strncpy()函数是要求 的问题,最终
- 什么是 的sizeof(C)返回?我忘了在 时刻,但我的猜测要么是1, 或90(可能90)
和其他人士指出,strtok()函数似乎是正确的行为。
@ Calyth:第一点是在这里讨论:http://stackoverflow.com/questions/1508838/how-to-copy-char-str-to-char-c-in-c。第二点:sizeof(c)返回90,其中strlen返回字符数char *(在另一个线程中也讨论) – 2009-10-02 13:24:23
是的,我看到了类似的帖子。我从不喜欢sizeof(c),其中c是一个char []语法。有人根据它写了一个数组长度的宏,如果你不小心传递了char *,它会变得非常混乱。 – Calyth 2009-10-02 13:50:24
- 1. ConsoleTraceListener为什么不写入控制台?
- 2. 为什么控制不在if()内部,仍然条件满足?
- 3. 为什么程序没有进入if语句时它应该
- 4. 为什么它没有进入if条件?
- 5. 为什么Json进入db?
- 6. 为什么进入PHPdebugger?
- 7. 为什么T4MVC为控制器操作引入虚拟?
- 8. 当requestedExecutionLevel为requireAdministrator时,为什么我无法写入控制台?
- 9. 为什么鸵鸟政策在我的控制器asp.net进入一个函数,
- 10. Javascript,为什么被视为八进制
- 11. 为什么需要if(0)和if(1)
- 12. 为什么要将二进制转换为十进制?
- 13. 进入源代码控制
- 14. 角度进入控制器
- 15. 为什么Rails控制器没有if语句来检查destroy是否成功?
- 16. 为什么XCode 4 GM控制台显示十进制进程和十六进制线程?
- 17. 为什么我的PowerShell脚本将空行写入控制台?
- 18. 为什么我无法将params传入控制器link_to?
- 19. 为什么注入控制器而不是操作
- 20. 为什么我无法注入角度控制器?
- 21. 为什么要在控制台的第二行输入?
- 22. 为什么需要在一个公共接入控制的viewController
- 23. NSBundle为什么控制台输出(空)?
- 24. 为什么vetoIfFailing碰撞巡航控制?
- 25. AngularJS - 为什么控制器不工作?
- 26. 为什么不用用户控制?
- 27. AngularJS - 为什么有多个控制器
- 28. 为什么我的程序进入if语句及其相应的else语句?
- 29. 尽管变量较小,为什么它会进入第一个if语句?
- 30. 为什么这段代码不会进入PL/SQL中的IF块?
所以什么解决的家伙? – 2009-10-02 12:01:33
没有'解决方案',@Ankit,因为没有问题。有一个问题,所以我们提供了答案:-)控制进入中频,因为这是它设计的目的。 – paxdiablo 2009-10-02 12:07:32