除了以前的答案,我想
- 應該如果
NULL (\0)
在x
發現檢查繼續?我認爲答案可能是:否。
- 最好將空字符的檢測邏輯與空字符串的邏輯分開
(i != 999)
部分不清楚。難道不是(i == 1000)
?
- OP代碼中有不匹配的圓括號。
這裏是我的版本:
/* return 1 when c is considered empty, 0 otherwise */
int isEmptyChar(const char c) {
return c == ' ' || c == '\t';
}
enum { N = 1000 };
/* return 1 when x is considered empty, 0 otherwise */
int isEmptyString(const char x[ N ]) {
for(int i = 0; i < N; i++) {
if(x[ i ] == '\0') {
break; /* stop, if NUL termination is found */
}
if(! isEmptyChar(x[ i ])) {
return 0; /* early return if non-empty char is found */
}
}
return 1;
}
你應該知道''/ t「'不是製表符,你可能是''\ t」' – 2010-09-28 17:56:42
除了別人已經解釋過的錯誤之外,你應該看看字符分類函數, 'isblank'只適用於C99,'isspace'也適用於遺傳性C. – 2010-09-28 18:19:51
將'if'和兩個'return'語句改爲'return i!= 999;'。 – frayser 2010-09-29 00:10:46