C中的数字和字母验证
Numbers and letters validation in C
我是编程新手,我面临着验证。我尝试编写一个程序,该程序将用户的 Name
和 Age
作为输入。我需要检查名称是否仅包含字母(它可以有空格)以及年龄是否仅来自数字。
我尝试使用函数 IsAlpha()
和 IsDigit()
但我认为这在我的程序中不是正确的方法,因为它只检查第一个字符。
例如,如果用户输入“Jane123 或 J0nas”,则会出现错误,数字也一样。
我想我应该使用 while of if 的东西。有什么建议么?谢谢
要么遍历输入并检查每个字符,要么使用 strspn
.
const char alpha[] = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const char digit[] = "0123456789";
if (strlen(Name) != strspn(Name, alpha)) {
printf("Invalid Username\n");
exit(-1);
}
if (strlen(Age) != strspn(Age, digit)) {
printf("Invalid Age\n");
exit(-1);
}
但请注意,如果您从函数中获取输入,例如 fgets
,您可能有一个包含换行符的字符,并且需要您先 trim 它们(从开始and/or结束)。
bool checkName(char Name[]) {
for (int i = 0; Name[i]; ++i) {
if(!isalpha(Name[i])) {
printf("Error!!!\n");
return 0;
}
}
return 1;
}
int main() {
char Name[] = "Jane123";
checkName(Name);
}
如果你想用 isdigit()
使用此功能,只需复制粘贴并将 isalpha()
替换为 isdigit()
我是编程新手,我面临着验证。我尝试编写一个程序,该程序将用户的 Name
和 Age
作为输入。我需要检查名称是否仅包含字母(它可以有空格)以及年龄是否仅来自数字。
我尝试使用函数 IsAlpha()
和 IsDigit()
但我认为这在我的程序中不是正确的方法,因为它只检查第一个字符。
例如,如果用户输入“Jane123 或 J0nas”,则会出现错误,数字也一样。
我想我应该使用 while of if 的东西。有什么建议么?谢谢
要么遍历输入并检查每个字符,要么使用 strspn
.
const char alpha[] = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
const char digit[] = "0123456789";
if (strlen(Name) != strspn(Name, alpha)) {
printf("Invalid Username\n");
exit(-1);
}
if (strlen(Age) != strspn(Age, digit)) {
printf("Invalid Age\n");
exit(-1);
}
但请注意,如果您从函数中获取输入,例如 fgets
,您可能有一个包含换行符的字符,并且需要您先 trim 它们(从开始and/or结束)。
bool checkName(char Name[]) {
for (int i = 0; Name[i]; ++i) {
if(!isalpha(Name[i])) {
printf("Error!!!\n");
return 0;
}
}
return 1;
}
int main() {
char Name[] = "Jane123";
checkName(Name);
}
如果你想用 isdigit()
使用此功能,只需复制粘贴并将 isalpha()
替换为 isdigit()