C 输入验证
输入验证
当用户在 C 程序中输入数据时,他们可能会输入一些意料之外的内容。输入验证确保输入正确后程序才会继续运行。
如果没有验证,您的程序可能会崩溃或给出错误的结果!
以下示例展示了在 C 语言中检查用户输入是否有效的简单方法。
验证数字范围
检查数字是否在允许的范围内(例如,1 到 5):
示例
#include <stdio.h>
int main() {
int number; // 用于存储用户号码的变量
do {
printf("Choose a number between 1 and 5: ");
scanf("%d", &number); // Read number input
while (getchar() != '
'); // 清除输入缓冲区中的剩余字符
} while (number < 1 || number > 5); // 继续询问,直到数字介于 1 和 5 之间。
printf("You chose: %d
", number); // 打印有效数字
return 0;
}
示例结果:
Choose a number between 1 and 5: 8
Choose a number between 1 and 5: -2
Choose a number between 1 and 5: 4
You chose: 4
验证文本输入
检查名称是否为空。使用 fgets() 并检查第一个字符:
示例
#include <stdio.h>
#include <string.h>
int main() {
char name[100]; // 用于存储用户名的缓冲区
do {
printf("Enter your name: ");
fgets(name, sizeof(name), stdin); // 以字符串形式读取输入
name[strcspn(name, "
")] = 0; // 如果存在换行符,请将其删除。
} while (strlen(name) == 0); // 如果输入为空,则重复上述步骤。
printf("Hello, %s
", name); // 向用户问好
return 0;
}
示例结果:
Enter your name:
Enter your name:
Enter your name: John
Hello, John
验证整数输入
确保用户输入的是数字。如果用户输入的是其他内容(例如字母),则使用 fgets() 和 sscanf() 再次询问:
示例
#include <stdio.h>
int main() {
int number; // 用于存储用户号码的变量
char input[100]; // 用于保存用户输入字符串的缓冲区
printf("Enter a number: ");
// 持续读取输入,直到用户输入有效的整数为止。
while (fgets(input, sizeof(input), stdin)) {
// 尝试从输入字符串中读取一个整数。
if (sscanf(input, "%d", &number) == 1) {
break; // 成功:打破循环
} else {
printf("Invalid input. Try again: "); //
If not an integer, ask again
}
}
// 打印用户输入的有效数字。
printf("You entered: %d
", number);
return 0;
}
示例结果:
Enter a number: AB
Invalid input. Try again: 3.5
Invalid input. Try again: 35
You entered: 35
提示: 您可以在<stdio.h> 库参考中阅读更多关于fgets()和sscanf()的内容。

