从文件中读取一行并将该行拆分为标记后,我需要检查标记是否只包含字母字符[a-zA-Z]。 C标准库中是否有某种功能可以检查?我可以使用regex.h来检查这个,但我认为这是夸张的。
当然,我可以编写一个循环遍历令牌并检查每个字符的函数,但我不想重新发明轮子。
P.S。:使用第三方库不是一种选择。
答案 0 :(得分:6)
当然:
#include <ctype.h>
int isalpha(int ch) // is alphabetic?
int isalnum(int ch) // is alphanumeric?
答案 1 :(得分: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);
答案 2 :(得分:3)
如Kos所述,isalpha(int ch)
和isalnum(int ch)
,但这些不是char *函数。用isalpha编码你自己并且alnum应该很容易,但你必须要小心:如果你打算处理特殊字符,检查你的语言环境(isalpha取决于它们)。
答案 3 :(得分:3)
Strspn将完成这项工作。
基本概念是给它一个字符串,并返回由特定列表中的字符组成的最长片段的长度。 将a-z和A-Z添加到该列表中。如果从strspn返回的值与strlen相同,那么你很高兴。
答案 4 :(得分:-2)
C标准库与char *相关的函数非常短。请检查此链接以查看是否有任何帮助: http://www.cplusplus.com/reference/clibrary/cstring/