tyf1218405122 发表于 2022-5-23 19:27:12

输入验证问题

#include <stdio.h>

long get_long(void){
       
        long input;
        char ch;
        while(scanf("%ld",&input)!=1)
        {
                while((ch=getchar())!='\n');
                        putchar(ch);
                printf("不是一个正确的值\n请输入一个");
                printf("一个正确的类型, such as :25,-178:");       
        }       
        return input;
}


int main()
{
        int x=3;
        printf("%d\r",x);
       
        printf("%d",get_long());
}


这里我输入不符合的类型。
当我输入f 然后按下enter后
缓冲区里是 f\n,这里的这个\n不应该被输出的。
在内层的while中,为什么在f下面多出一行?


人造人 发表于 2022-5-23 19:33:06

      {
                while((ch=getchar())!='\n');
                        putchar(ch);
                printf("不是一个正确的值\n请输入一个");
                printf("一个正确的类型, such as :25,-178:");      
      }   

人造人 发表于 2022-5-23 19:33:52

while 后面的分号

豆嘉木 发表于 2022-5-23 19:34:22

本帖最后由 豆嘉木 于 2022-5-23 19:36 编辑

while后面少分号

tyf1218405122 发表于 2022-5-23 19:39:40

人造人 发表于 2022-5-23 19:33
while 后面的分号

谢,没有主要到我多加了个;
页: [1]
查看完整版本: 输入验证问题