`

C语言中对scanf输入非法字符的检查和处理

 
阅读更多

在C中scanf()函数返回成功读入的变量的个数。如果它没有读取任何项目(输入非法字符,例如:希望得到数字,而用户却输入的是字符),scanf()返回值为0.当检测到“文件结尾”是,会返回EOF(EOF是在文件stdio.h中定义的特殊值,一般,#define指令把EOF的值定义为-1).

利用scanf()以上的性质,可对输入值进行检验,代码如下:

 

 

#include<stdio.h>

int main(void)
{
	 int num;
	 int status;
	 printf("input the value of num:");
	 status = scanf("%d",&num);
         if(status ==0)
	 {
		 printf("enter error");
                 fflush(stdin);//清除输入缓冲区的错误数据 
	 }
	 else if(status == EOF)
	 {
            printf("Input failure occurs!\n"); 
	 }

	 else
             printf("\nnum = %d\n",num);
	 fflush(stdin);
	 getchar();
	 
	 return 0;
}
 

 

分享到:
评论

相关推荐

    c语言输入字符串数组四组输入字符串数组

    在C语言中,输入字符串数组是一项常见的任务,用于处理用户提供的多行文本数据。下面将详细解释如何在C语言中安全地输入字符串数组,并提供一些关键的编程实践。 1. **基本输入方法**: 基本的C语言字符串输入通常...

    C语言输入控制函数函数

    在C语言中,输入控制是程序设计中必不可少的一...了解并熟练掌握这些输入控制函数,将使你在C语言编程中更加得心应手,能够更有效地处理用户输入和文件数据。通过灵活运用,你可以创建更健壮、更适应用户交互的程序。

    非常好用的C语言控制输入封装

    然而,这些函数在处理输入时存在一定的风险,例如缓冲区溢出、非法字符处理不当等问题。因此,对输入进行封装,可以提供更好的错误处理机制,增强程序的健壮性。 二、封装的必要性 1. 错误处理:原始的输入函数...

    C语言程序设计标准教程

    scanf函数 scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。 一、scanf函数的一般形式 scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,...

    C语言编程常见错误小结

    C语言是一种功能强大且灵活的编程语言,它的语法检查相对其他高级语言较为宽松,因此给程序员提供了很大的自由度,但也正因为这种灵活性,使得C语言的编程过程中容易出现一些常见的错误。以下是一些初学者常常遇到的...

    万年历的程序-C语言

    2. 输入处理:如果程序需要用户输入日期,可以使用scanf函数读取用户输入,并进行格式检查和错误处理。 四、文件操作 虽然题目没有明确提及文件操作,但在实际应用中,万年历程序可能需要读取或写入文件,比如保存...

    五子棋程序C语言数据结构

    3. **输入输出处理**:C语言的`scanf()`和`printf()`函数用于接收用户输入和显示棋盘状态。可能还会涉及字符流I/O,如`fgets()`和`fputs()`,以便保存和加载游戏进度。 4. **算法**:五子棋的胜负判断需要用到深度...

    基于C语言简易计算器

    在解析用户输入的过程中,可能需要用到字符串处理函数,如`scanf()`用于从标准输入读取数据,`strlen()`计算字符串长度,`strtok()`分割字符串等。这些函数可以帮助我们从用户输入的字符串中提取数字和运算符。 ...

    C语言练习题,对C语言的训练,适合初学者

    3. **C语言特性**:C语言并不自带输入输出语句,而是使用标准库函数`stdio.h`中的`printf`和`scanf`等进行输入输出。注释不会影响程序的编译,但编译器不会检查注释中的拼写错误。 4. **C源程序构成**:一个C源程序...

    潜艇大战 C语言实现

    6. **输入/输出(I/O)处理**:C语言的`scanf`和`printf`函数用于从标准输入读取用户命令并显示游戏状态。在潜艇大战中,可能还需要处理键盘事件,这需要了解C语言的字符流I/O或者使用特定库(如ncurses库)来实现。...

    c语言打字母游戏源码.zip

    9. **错误处理**:良好的程序应该能够处理预期之外的情况,比如用户输入非法字符或游戏卡死。源码中可能会有异常处理和错误报告的机制。 10. **结构体和联合体**:如果游戏状态复杂,可能会定义结构体来封装相关的...

    C语言贪吃蛇,可视化

    在贪吃蛇游戏中,可能需要设置适当的边界检查,防止蛇超出屏幕,以及处理非法用户输入等情况。 通过分析和理解这个300行的C语言贪吃蛇源码,你可以学到基本的编程思维、C语言语法、控制结构、数据结构、函数应用,...

    C语言计算器开发小例

    5. 错误处理:在用户输入不合法或出现计算错误时,程序应能适当地捕获和处理这些错误,比如非法字符、除数为零等。 6. 循环与分支结构:通过`for`、`while`循环和`if`、`else`语句来实现控制流,使得计算器可以按照...

    打地鼠游戏——基于C语言

    - 在实际程序中,应考虑异常情况,比如用户输入非法或游戏超时。良好的错误处理可以提高程序的健壮性。 9. **内存管理**: - 在C语言中,手动内存管理是必要的。虽然这个简单游戏可能不需要动态分配大量内存,但...

    c语言——数字棋程序

    8. **错误处理**:良好的编程实践中,应包含对用户错误和异常情况的处理。例如,当玩家输入非法数字或超出棋盘范围时,程序应能适当地给出错误提示并恢复游戏状态。 9. **结构体**:如果游戏包含多个相关的属性(如...

    c语言编写的万年历程序(经典)

    5. **用户输入处理**:C语言中的`scanf`函数可以用于获取用户的年、月输入,但需要确保输入的有效性,防止出现非法值。 6. **循环与控制流**:程序可能需要使用`for`或`while`循环来遍历一个月的所有日期,以及根据...

    c语言迷宫游戏源代码

    5. 错误处理和边界检查:为了确保游戏的稳定性和安全性,源代码应包含对非法输入、越界访问等错误的检测和处理。 四、学习路径 1. 理解数据结构:首先,要了解如何使用二维数组来表示迷宫,以及如何存储和操作玩家...

    c语言制作计算器

    1. **基本输入输出**:C语言使用`stdio.h`库中的`printf()`和`scanf()`函数进行输入输出。在计算器程序中,你需要使用`scanf()`获取用户输入的数字和运算符,然后用`printf()`显示计算结果。 2. **变量定义**:在...

    c语言学习打字母游戏源码.zip

    7. **错误处理**:良好的程序应该能处理异常情况,如用户输入非法字符。在C语言中,这通常通过条件语句和错误处理函数来实现。 8. **结构化编程**:C语言提倡结构化编程,即通过函数、循环和选择结构来组织代码。在...

    C语言编写的五子棋

    3. 输入处理:C语言的`scanf`函数用于读取用户输入的坐标,需要进行边界检查和错误处理,确保输入有效。 4. 输出显示:使用`printf`函数更新棋盘状态并显示,可能需要自定义函数来美化输出,如用不同字符表示棋子和...

Global site tag (gtag.js) - Google Analytics