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. 什麼在控制器進入在GRAILS
- 2. ConsoleTraceListener爲什麼不寫入控制檯?
- 3. 爲什麼控制不在if()內部,仍然條件滿足?
- 4. 爲什麼程序沒有進入if語句時它應該
- 5. 爲什麼它沒有進入if條件?
- 6. 爲什麼控制不動?
- 7. 輸入'if'解析錯誤 - 爲什麼?
- 8. 爲什麼Json進入db?
- 9. 爲什麼進入PHPdebugger?
- 10. 爲什麼if(Request.IsAjaxRequest)爲false
- 11. 爲什麼Powershell會寫入控制檯,但不寫入文件?
- 12. 不進入if語句,調用控制器方法軌
- 13. 爲什麼T4MVC爲控制器操作引入虛擬?
- 14. 當requestedExecutionLevel爲requireAdministrator時,爲什麼我無法寫入控制檯?
- 15. 爲什麼鴕鳥政策在我的控制器asp.net進入一個函數,
- 16. Javascript,爲什麼被視爲八進制
- 17. 爲什麼需要if(0)和if(1)
- 18. 什麼是輸入的asp.net控制器
- 19. 爲什麼要將二進制轉換爲十進制?
- 20. 爲什麼Rails控制器沒有if語句來檢查destroy是否成功?
- 21. MWPhotoBrowser進入Tabbar控制器
- 22. 進入源代碼控制
- 23. 角度進入控制器
- 24. 爲什麼XCode 4 GM控制檯顯示十進制進程和十六進制線程?
- 25. 爲什麼在txt文件上寫入與控制檯不同?
- 26. 爲什麼我無法注入角度控制器?
- 27. 爲什麼readline()在控制檯中輸入回顯?
- 28. 爲什麼不在JavaFX控制器中注入成員?
- 29. 爲什麼輸入yes後控制檯會關閉?
- 30. 爲什麼需要在一個公共接入控制的viewController
所以什麼解決的傢伙? – 2009-10-02 12:01:33
沒有'解決方案',@Ankit,因爲沒有問題。有一個問題,所以我們提供了答案:-)控制進入中頻,因爲這是它設計的目的。 – paxdiablo 2009-10-02 12:07:32