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