首页 文章

如何使数组只接受c编程中的数字?

提问于
浏览
-3

所以我的任务是创建一个接受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

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

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

    我不打算为你做功课,但这应该给你这个想法 .

  • 0

    您可以使用函数 isdigit(x) .

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

    你必须逐位检查 .

  • 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;
        }
    }
    ...
    

相关问题