如何在C编程中使数组仅接受数字?

时间:2018-11-22 19:01:43

标签: c

所以我的任务是创建一个可以接受10个字符的数组。如果用户输入的字符大于10,则将消除错误。如果输入的10个字符包含字母,则会显示另一个错误。 因此,数组只能有10个数字,不能有其他数字,如果输入的数字小于或大于10,则会显示错误以及数组中有字母。

我的代码接受数字和字母,因为我无法弄清楚输入字母时如何显示错误。

void getTenDigitPhone(char telNum[])
{
    int i;
    int z = 1;

    do
    {
        scanf("%s", telNum);
        if (strlen(telNum) != 10)
        {
            printf("Enter a 10-digit phone number: ");
            z = 1;
        }
        else if (strlen(telNum) == 10)
        {
            return telNum;
        }
    } while (z == 1);
}

3 个答案:

答案 0 :(得分:0)

您只需要检查telNum仅包含数字:

for (int i = 0; i < 10; i++)
    if (!isdigit(telNum[i])) {
        // handle error because a non-digit was found.
    }

我不会为您做家庭作业,但这应该可以给您带来启发。

答案 1 :(得分:0)

您可以使用函数isdigit(x)

如果x是数字,则返回true(非零),否则返回false(零)。

您必须逐位检查。

答案 2 :(得分:0)

我将给出答案,因为您已发布了当前代码以作为您的工作。作为其他答案,您应该使用isdigit(x)函数。

...
else if (strlen(telNum) == 10)
{
    int i;
    char err = 0;
    for (i = 0; i < 10; i++) {
        if (!isdigit(telNum[i])) {
             // Your error here
             printf("Non-digit character found");
             err = 1;
             break;
        }
    }
    if (err == 0) {
        return telNum;
    }
}
...