箭头指出来自用户的错误输入C

时间:2016-02-09 15:01:57

标签: c

以下代码允许用户在字符串中写入数字,以便自动将其转换为整数。但是,如果他写的不是数字而应该有错误。到目前为止一切顺利。

现在的问题是:我需要将箭头指向用户不允许的字母。 示例:他写了45.这是对的。他写了423a4。这是错的。然后字母a上应该有一个箭头点。

但我不知道应该如何以及在哪里放箭头。

注意:除stdio.h外,不允许任何库函数

以下是代码:

#include <stdio.h>

void main()
{
    char input[100];
    printf("Type a String which will be converted to an Integer: ");
    scanf("%s", input);

    int number = 0;
    int i = 0;
    int x = 0;
    bool success = true;

    while (input[i] != '\0')
    {
        if (input[i] >= '0' && input[i] <= '9')
        {
            number = number * 10 + input[i] - '0';
            i++;
        }
        else
        {
            success = false;
            printf("\n");
            printf("Character %c is not a number! \n", input[i]);
            break;
        }
    }
    if (success)
    {
        printf("string %s -> number %d \n", input, number);
    }
}

1 个答案:

答案 0 :(得分:0)

如果你想指出第一个不允许的字符。

int main()
{
    char input[100];
    char arrow[100] = {0};
    printf("Type a String which will be converted to an Integer: ");
    scanf("%s", input);

    int number = 0;
    int i = 0;
//    int x = 0;
    bool success = true;

    while (input[i] != '\0')
    {
        if (input[i] >= '0' && input[i] <= '9')
        {
            number = number * 10 + input[i] - '0';
            arrow[i] = ' ';
            i++;
        }
        else
        {
            success = false;
            arrow[i]='^';
            printf("\nInput number is wrong!\n%s\n%s\n", input, arrow);
            break;
        }
    }
    if (success)
    {
        printf("string %s -> number %d \n", input, number);
    }

    return 0;
}

输出

Input number is wrong!
423432rr55
      ^