检查输入是否仅包含C中的数字

时间:2015-03-25 00:03:09

标签: c arrays c99

我需要检查插入的输入(大小是由用户确定的数组,意味着在运行时)是否仅包含数字(C99)。 虽然我知道如何这样做,但在我看来是笨拙的,这导致我问这里是否有更好的解决方案。我的“想法”是将输入作为字符串数组接收,然后在每个成员上运行循环以检查它是否包含非数字字符。有没有更好的方法呢?

2 个答案:

答案 0 :(得分:1)

所以,如果我正确地理解你的问题,你会读到几行文字的数组,即你有:

char **lines;
int count_lines, i;

count_lines = get_line_count_somehow();
lines = malloc(count_lines*sizeof(*lines));
for (i = 0; i < count_lines; i++)
    lines[i] = get_actual_line_somehow();

现在你想遍历每个字符串。我假设lines[i] i的{​​{1}}的{​​{1}}已被'\0'终止。

int contains_digits_only = 1;

for (i = 0; i < count_lines; i++)
{
    char *ptr = lines[i];
    while (*ptr)
    {
        if (!isdigit(*ptr));
        {
             contains_digits_only = 0;
             goto out;
        }
        ptr++;
    }
}
out:
do_something_with(contains_digits_only);

答案 1 :(得分:0)

使用getchar()(stdio.h)读取输入以获得最佳性能,然后在读取输入时,可以使用位于ctype内的isdigit()检查当前char是否为数字。 ħ