從文件中讀取一行並將該行分成標記後,我需要檢查標記是否只包含字母字符[a-zA-Z]。 C標準庫中是否有某種功能來檢查?我可以使用regex.h來檢查這個,但我認爲這是誇大了。C標準庫函數檢查char *是否是一個單詞?
當然,我可以編寫一個循環遍歷令牌並檢查每個字符的函數,但我不想重新發明輪子。
P.S .:使用第三方庫不是一個選項。
從文件中讀取一行並將該行分成標記後,我需要檢查標記是否只包含字母字符[a-zA-Z]。 C標準庫中是否有某種功能來檢查?我可以使用regex.h來檢查這個,但我認爲這是誇大了。C標準庫函數檢查char *是否是一個單詞?
當然,我可以編寫一個循環遍歷令牌並檢查每個字符的函數,但我不想重新發明輪子。
P.S .:使用第三方庫不是一個選項。
肯定:
#include <ctype.h>
int isalpha(int ch) // is alphabetic?
int isalnum(int ch) // is alphanumeric?
顯然你需要通過你的char * – 2010-11-29 14:43:56
C標準庫是對char *相關的功能很短。請檢查該鏈接以查看是否anythings幫助: http://www.cplusplus.com/reference/clibrary/cstring/
您已經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);
定義的所有這些功能,如科斯,isalpha(int ch)
和isalnum(int ch)
規定,但這些都不是字符*的功能。用isalpha和alnum編碼你自己應該很容易,但你必須小心:如果你要處理特殊字符,請檢查你的語言環境(isalpha取決於它們)。
Strspn將完成這項工作。
基本的概念是,你給它一個字符串,並返回包含特定列表中字符的最長片段的長度。 將a-z和A-Z添加到該列表中。如果從strspn返回的值與strlen相同,那麼您很好。
C很簡約。 「不想重塑」和「第三方圖書館不是一種選擇」不能相互融合。 – 2010-11-29 14:42:21
@ J-16在一個真實世界的項目中,我當然會使用第三方庫,但這僅限於標準庫中的作業:-( – helpermethod 2010-11-29 15:04:12
[s] scanf(「%[a-zA -Z])也許? – Nyan 2010-11-29 15:13:20