2010-11-29 129 views
0

從文件中讀取一行並將該行分成標記後,我需要檢查標記是否只包含字母字符[a-zA-Z]。 C標準庫中是否有某種功能來檢查?我可以使用regex.h來檢查這個,但我認爲這是誇大了。C標準庫函數檢查char *是否是一個單詞?

當然,我可以編寫一個循環遍歷令牌並檢查每個字符的函數,但我不想重新發明輪子。

P.S .:使用第三方庫不是一個選項。

+7

C很簡約。 「不想重塑」和「第三方圖書館不是一種選擇」不能相互融合。 – 2010-11-29 14:42:21

+0

@ J-16在一個真實世界的項目中,我當然會使用第三方庫,但這僅限於標準庫中的作業:-( – helpermethod 2010-11-29 15:04:12

+1

[s] scanf(「%[a-zA -Z])也許? – Nyan 2010-11-29 15:13:20

回答

6

肯定:

#include <ctype.h> 

int isalpha(int ch) // is alphabetic? 
int isalnum(int ch) // is alphanumeric? 
+5

顯然你需要通過你的char * – 2010-11-29 14:43:56

3

您已經ctype.h

int isalnum(int c); 
    int isalpha(int c); 
    int iscntrl(int c); 
    int isdigit(int c); 
    int isgraph(int c); 
    int islower(int c); 
    int isprint(int c); 
    int ispunct(int c); 
    int isspace(int c); 
    int isupper(int c); 
    int isxdigit(int c); 
3

定義的所有這些功能,如科斯,isalpha(int ch)isalnum(int ch)規定,但這些都不是字符*的功能。用isalpha和alnum編碼你自己應該很容易,但你必須小心:如果你要處理特殊字符,請檢查你的語言環境(isalpha取決於它們)。

3

Strspn將完成這項工作。

基本的概念是,你給它一個字符串,並返回包含特定列表中字符的最長片段的長度。 將a-z和A-Z添加到該列表中。如果從strspn返回的值與strlen相同,那麼您很好。

相關問題