C中的数字和字母验证

Numbers and letters validation in C

我是编程新手,我面临着验证。我尝试编写一个程序,该程序将用户的 NameAge 作为输入。我需要检查名称是否仅包含字母(它可以有空格)以及年龄是否仅来自数字。 我尝试使用函数 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()