- 论坛徽章:
- 0
|
- 在这里我想解释一下whyglinux的这段程序
- int n;
- int ret;
- do {
- printf( "Input an integer: " );
- ret = scanf( "%d", &n );
- while ( getchar() != '\n' ); /* Clear the input buffer */
- } while ( ret != 1 );
- /* 执行这一段函数 */
- 当用户如果输入一个数字的时候,那么这个时候n定义的是一个整型就将这个整型接收
- ret = scanf( "%d", &n );的意思不等于ret=n;
- 而是当n接收到一个整型值时候ret=1;
- while ( ret != 1 );跳出循环
- 如果当用户输入一个字符类型的数据,那么这个时候 n已定义为一个整型就无法接收了
- 所以n没有接收到值此时候ret=0;
- 而getchar正是来接受字符的,当用户输入了回车('\n')后接收完毕
- 跳出while ( getchar() != '\n' ); 注意这里的while 顺环体为空语句
- 这个时候while ( ret != 1 );(因为ret=0,条件为真继续执行该循环)
- 所以说如果你输入了一个非int类型
- 那么接下来的又会
- printf( "Input an integer: " );
- ret = scanf( "%d", &n );
- (直到输入为int类型止)
复制代码
如果我解释的有错误请大家指出来
也有可能该算法不止这些
还有其他功能
也希望大家能继续发挥
我应用到这个算法就是这样的
[ 本帖最后由 jihuaneva 于 2006-12-31 12:53 编辑 ] |
|