C 教程

C 教程 C 语言简介 C 下载安装和环境配置 C 快速入门 C 语法 C 输出 C 注释 C 变量 C 数据类型 C 常量 C 运算符 C 布尔值 C If...Else 语句 C Switch 语句 C While 循环 C For 循环 C Break/Continue 语句 C 数组 C 字符串 C 用户输入 C 内存地址 C 指针

C 函数

C 函数 C 函数参数 C 作用域 C 函数声明 C 递归 C 数学函数

C 文件

C 创建文件 C 写入文件 C 读取文件

C 结构体

C 结构体 C 嵌套结构体 C 结构体和指针 C 联合体 C typedef

C 枚举

C 枚举

C 内存

C 内存管理

C 错误

C 错误 C 调试 C 空值 C 错误处理 C 输入验证

C 更多

C 日期 C 随机数 C 宏 C 代码组织 C 存储类 C 位运算符 C 固定宽度整数

C 项目

C 项目

C 参考资料

C 参考资料 C 关键词 C <stdio.h> C <stdlib.h> C <string.h> C <math.h> C <ctype.h> C <time.h>

C 标准库参考

C 标准库 - 参考手册 C 标准库 - <assert.h> C 标准库 - <ctype.h> C 标准库 - <errno.h> C 标准库 - <float.h> C 标准库 - <limits.h> C 标准库 - <locale.h> C 标准库 - <math.h> C 标准库 - <setjmp.h> C 标准库 - <signal.h> C 标准库 - <stdarg.h> C 标准库 - <stddef.h> C 标准库 - <stdio.h> C 标准库 - <stdlib.h> C 标准库 - <string.h> C 标准库 - <time.h>

C 实例

C 语言实例 C 经典100例 C 编译器 C 测验


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()的内容。