C 语言 - 输入验证
输入验证
当用户在 C 程序中输入数据时,他们可能会输入一些意外的内容。输入验证确保在程序继续运行之前输入是正确的。
如果没有验证,您的程序可能会崩溃或给出错误的结果!
下面的示例展示了在 C 语言中检查用户输入是否有效的一些简单方法。
验证数字范围
检查数字是否在允许的范围内(例如,1 到 5):
实例
#include <stdio.h>
int main() {
int number; // 用于存储用户数字的变量
do {
printf("Choose a number between 1 and 5: ");
scanf("%d", &number); // 读取数字输入
while (getchar() != '\n'); // 清除输入缓冲区中剩余字符
} while (number < 1 || number > 5); // 持续询问,直到数字在 1 和 5 之间
printf("You chose: %d\n", 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, "\n")] = 0; // 如果存在换行符,则将其移除
} while (strlen(name) == 0); // 如果输入为空,则重复
printf("Hello, %s\n", name); // 向用户打招呼
return 0;
}
Example 结果:
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: "); // 如果不是整数,再次询问
}
}
// 打印用户输入的有效数字
printf("You entered: %d\n", number);
return 0;
}
示例结果:
Enter a number: AB Invalid input. Try again: 3.5 Invalid input. Try again: 35 You entered: 35