当前位置:  开发笔记 > 程序员 > 正文

检查scanf的输入

如何解决《检查scanf的输入》经验,为你挑选了1个好方法。

我想写代码,如果用户输入正确的输入,检查,即1,2,34.否则,将打印消息"输入错误".例如,如果用户输入一个字母,由于输入变量scanfchar类型,它也可以.但是在多个字符的情况下,我通过以下解决方案:我尝试将所有字符输入到char数组中并检查有多少成员.我写了以下代码:

char option;
int countIn;
char inArray[10];

do { //while option!=4
    scanf("%c", &option);

    while (countIn < 10 &&  scanf("%c", &option) != -1 && option != '\n') {
        inArray[countIn] = option;
        countIn++;
    }

    if (countIn > 1) { option = 10; }
    else { option = inArray[0]; }
    countIn = 0;
} while (option != '4');

问题是,当我输入1例如,程序运行良好,但对于第二次循环迭代,scanf它不起作用,程序会1一次又一次地自动执行该部分.

我做错了什么?



1> P.P...:

将以下两个scanf()电话替换为

scanf(" %c", &option);

请注意格式字符串中的空格,它告诉scanf使用所有空格.它似乎跳过的原因是前一个输入在输入缓冲区中留下的换行符.

来自scanf():

   ·      A sequence of white-space characters (space, tab, newline,
          etc.; see isspace(3)).  This directive matches any amount of
          white space, including none, in the input.

请注意,尽管EOF通常被定义为-1,但假设这样做并不安全.我强烈建议用EOF而不是-1.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有