检查数组中的元素是否为 int 类型

Check if element in an array is of type int

我有这个代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char const *argv[])
{
    char arr[20];

    fgets(arr, sizeof(arr), stdin);

    for (int i = 0; i < sizeof(arr); i++)
    {
        if (arr[i] != /* int */)
        {
            // do something
        }
    }

}

我正在尝试遍历一个数组,如果数组中有数字以外的任何内容,我想“做点什么”。

是否可以检查数组中的元素是否为数字?

谢谢。

数字或类型 int(如标题)?

你有一个长度为20的字符串。你如何定义一个数字?一个数字序列?这遍历数组并找到孤立的数字,然后使用 atoi()atof() 进行转换。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

void main(void)
{
    char arr[20];

    fgets(arr, sizeof arr, stdin);

    printf("STRING: %s\n", arr);

    for (int i = 0; (arr[i]); i++)
    {
            if (isdigit(arr[i]))
                printf("Digit: %c\n", arr[i]);
            else
                printf("%c\n", arr[i]);
    }

    printf("atoi: %d\n", atoi(arr));
    printf("atof: %f\n", atof(arr));

}

输出:

STRING: -3.1411isnegpi

-
Digit: 3
.
Digit: 1
Digit: 4
Digit: 1
Digit: 1
i
s
n
e
g
p
i


atoi: -3
atof: -3.141100

还有:

STRING: 1e22

Digit: 1
e
Digit: 2
Digit: 2


atoi: 1
atof: 10000000000000000000000.000000

检查字符串中的数字很简单,但提取“数字”则不然。 “1e22”是数字1和22吗? “abc10”是数字吗?