📜  检查命令行输入是否为数字 - C 编程语言(1)

📅  最后修改于: 2023-12-03 15:40:33.161000             🧑  作者: Mango

检查命令行输入是否为数字

在C语言中,有时需要检查用户或程序输入的值是否为数字。本文将介绍一些方法来检查命令行输入是否为数字。

方法一:使用isdigit()函数

isdigit()函数可以判断一个字符是否为数字。可以使用getchar()函数来逐个读取字符,然后对每个字符使用isdigit()函数进行判断。具体代码如下所示:

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

int main() {
    int c;
    printf("请输入一个数:");
    while ((c = getchar()) != '\n') {
        if (!isdigit(c)) {
            printf("输入的不是数字!\n");
            return 0;
        }
    }
    printf("输入的是数字!\n");
    return 0;
}

输出:

请输入一个数:1234
输入的是数字!
请输入一个数:12a4
输入的不是数字!
方法二:使用sscanf()函数

sscanf()函数可以从一个字符串中读取数字,如果字符串不是数字,sscanf()函数会返回0。因此,我们可以使用sscanf()函数来检查命令行输入是否为数字。具体代码如下所示:

#include <stdio.h>

int main(int argc, char *argv[]) {
    int n;
    if (sscanf(argv[1], "%d", &n) != 1) {
        printf("输入的不是数字!\n");
        return 0;
    }
    printf("输入的是数字!\n");
    return 0;
}

在命令行输入:

$ ./program 1234
输入的是数字!
$ ./program 12a4
输入的不是数字!
方法三:使用strtol()函数

strtol()函数可以将字符串转换为长整型数。如果字符串不是数字,strtol()函数会返回0。我们可以先将命令行输入的字符串转换为长整型数,然后检查转换后的值是否为0来判断命令行输入是否为数字。具体代码如下所示:

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

int main(int argc, char *argv[]) {
    char *endptr;
    long n = strtol(argv[1], &endptr, 10);
    if (*endptr != '\0' || n == 0) {
        printf("输入的不是数字!\n");
        return 0;
    }
    printf("输入的是数字!\n");
    return 0;
}

在命令行输入:

$ ./program 1234
输入的是数字!
$ ./program 12a4
输入的不是数字!

以上就是检查命令行输入是否为数字的几种方法,根据实际情况选择合适的方法即可。