📅  最后修改于: 2023-12-03 14:53:13.800000             🧑  作者: Mango
在 C 编程语言中,我们经常需要从用户那里获取整数输入。但是,如果用户输入了一个非整数值,程序就可能崩溃或者产生不正确的结果。因此,我们需要确保输入是整数。
以下介绍几种方法,可以确保输入是整数:
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 标准库中有一些其他的函数,也可以用于确保输入是整数。例如:
可以根据实际情况选择适合的函数来确保输入是整数。