檢查C中的字符串是否僅由空格組成的最有效/最安全的方法是什麼?我是否需要自己編寫一個函數來檢查或者string.h中是否有一個我可以使用的函數?檢測字符串是否由空格組成?
回答
好,寫你自己的很簡單:你的標準庫使用
int IsSpaces(char * s) {
while (* s) {
if (! isspace(* s)) {
return 0;
}
s++;
}
return 1;
}
什麼不太可能是更有效的。
沒有冒犯的unapersson,但我覺得你的編碼風格很難閱讀。 – orlp 2011-05-10 13:38:57
@night對不起,它實際上已經開發了多年,教人們C和C++要儘可能清晰。 – 2011-05-10 13:40:03
似乎很難讀懂的唯一部分是圓括號內容周圍的空間。我不確定這是如何使它更容易閱讀;它似乎在分裂合乎邏輯的事情。 – 2011-05-10 13:42:18
當你說空間時,你的意思是還是空格字符?
但是,沒有這樣的功能,這個工作雖然:
int isonlyspaces(char *str) {
while (*str++ == ' ');
return --str == '\0';
}
如果平均間隔字符,而不是字面的空間,這個版本是合適的:
int isonlyspaces(char *str) {
while (isspace(*str++));
return --str == '\0';
}
試試這個:
if (!s[strspn(s, " ")]) /* it's all spaces */
如果您還想在「空格」的定義中包含選項卡,換行符等,SIM卡將它們添加到strspn
的第二個參數。
可能值得評論,你將索引尾隨\ 0字節IFF的跨度是整個長度,因此! '\ 0'將是真實的。 – Roboprog 2011-05-10 13:56:35
man string.h
將我帶到以下manpage。
NAME strspn,strcspn - 搜索字符串對一組字符
概要
#include <string.h>
size_t strspn(const char *s, const char *accept);
size_t strcspn(const char *s, const char *reject);
說明的
的strspn()函數計算 長度的初始的s 的段完全由字符 組成PT。
的strcspn()函數計算 長度s 的初始段,其完全由 字符不是拒絕中的。
- 1. 檢測字符串是否僅由一種字符組成
- 2. 檢查字符串是否有空格
- 3. ModelState.Errors由空字符串組成
- 4. 如何測試字符串是否僅由不同字符組成?
- 5. 檢測字符串只包含空格
- 6. 在檢查字符串是否爲空時表示字符串中的空格
- 7. 檢查數組中的字符串是否具有空格字符javascript/jquery
- 8. 如何檢查字符串是否僅由字母和數字組成
- 9. Java .split()由字符串中的空格組成
- 10. 檢查字符串是否包含空格和多個@符號
- 11. Javascript:檢查字符串分隔符之間是否有空格
- 12. 檢查一個字符串是否只有字母+空格?
- 13. 檢查字符串是否爲空
- 14. 檢查字符串是否爲空jquery
- 15. 檢查字符串是否爲空
- 16. C++ - 檢查字符串是否爲空
- 17. 檢查字符串是否不是Javascript中的空格
- 18. 檢查一個字符串是否可以由Javascript中另一個字符串中的字符組成
- 19. 如何檢查字符串中的行是否由空格分隔?
- 20. 如何檢查是否一個特定的詞由空格的字符串
- 21. 檢查字符串是否是由某個字符
- 22. Applescript:檢查一個字符串是否包含空字符串?
- 23. 檢測字符串是否有來自可能性數組的子字符串
- 24. 檢查數組是否有字符串?
- 25. 如何檢查一個字符串是否由PHP中的整數組成
- 26. 檢測字符串開頭的空格字符
- 27. 檢查一個字符串是否都是唯一的字符,空格除外
- 28. 檢查字符串是否包含多個空格
- 29. 如何檢查字符串是否包含空格
- 30. 檢查字符串中是否只有空格
要小心'is' \ *函數:它們**要求**將它們的參數轉換爲'unsigned char'。見[C99標準]中的7.4/1(http://www.open-std.org/JTC1/sc22/wg14/www/docs/n1256.pdf)。 – pmg 2011-05-10 13:43:20