以下代码允许用户在字符串中写入数字,以便自动将其转换为整数。但是,如果他写的不是数字而应该有错误。到目前为止一切顺利。
现在的问题是:我需要将箭头指向用户不允许的字母。 示例:他写了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);
}
}
答案 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
^