📌  相关文章
📜  如何确保输入是整数 - C 编程语言(1)

📅  最后修改于: 2023-12-03 14:53:13.800000             🧑  作者: Mango

如何确保输入是整数 - C 编程语言

在 C 编程语言中,我们经常需要从用户那里获取整数输入。但是,如果用户输入了一个非整数值,程序就可能崩溃或者产生不正确的结果。因此,我们需要确保输入是整数。

以下介绍几种方法,可以确保输入是整数:

使用 scanf 函数

scanf 函数是 C 标准库中的函数,用于从标准输入流(stdin)中读取输入。可以使用 %d 格式说明符告诉 scanf 函数读取一个整数。

int n;
if (scanf("%d", &n) == 1) {
    // n 是一个整数
} else {
    // n 不是一个整数
}

上述代码中,如果 scanf 函数成功读取了一个整数,它的返回值将是 1。如果 scanf 函数没有读取到整数,返回值将是 0 或者 EOF。

检查用户输入的字符串

另一种方法是使用 fgets 函数从标准输入流中一次读取一行输入,并检查输入字符串是否只包含数字字符。可以使用库函数 isdigit 来检查字符是否为数字字符。

char buffer[100];
if (fgets(buffer, sizeof(buffer), stdin)) {
    // 从标准输入中读取了一行,现在检查它是否是一个整数。
    int i = 0;
    if (buffer[i] == '-' || buffer[i] == '+') {
        i++;
    }
    // 检查其余字符是否都是数字字符
    while (isdigit(buffer[i])) {
        i++;
    }
    if (buffer[i] == '\n' || buffer[i] == '\0') {
        // 字符串只包含数字字符
        int n = atoi(buffer);
        // n 是一个整数
        // ...
    } else {
        // 字符串不是一个整数
    }
} else {
    // 读取输入失败
}

上述代码中,使用 fgets 函数从标准输入流中一次读取一行输入。然后检查输入字符串是否只包含数字字符,如果是,则使用 atoi 函数将输入字符串转换为整数。如果不是整数,则可以执行所需的错误处理代码。

使用其他库函数

C 标准库中有一些其他的函数,也可以用于确保输入是整数。例如:

  • strtol 函数可以将字符串转换为长整型整数,并报告转换结果是否成功。
  • sscanf 函数可以从字符串中读取输入,类似于 scanf 函数。

可以根据实际情况选择适合的函数来确保输入是整数。