c - 在 C 中使用 do while 循环进行数字验证

标签 c

我有这个运行一次的代码;然后我输入一些非数字文本,它会继续打印

Enter Seed

不执行scanf代码。

do {
    printf("Enter SEED: ");
    scanf("%d", &seed);
}
while (!isdigit(seed));

最佳答案

先前输入的尾随换行符将被视为新输入,您需要将其吃掉

避免使用 scanf,而是使用 fscanf :-

int seed, ch;
do{
    printf("Enter SEED: ");
    if(fscanf(stdin, "%d", &seed) == 1)
        break;
    else 
       while( (ch = getchar()) != '\n' && ch != EOF); //Eat the trailing newline
}while(1);

关于c - 在 C 中使用 do while 循环进行数字验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21978250/

相关文章:

复制c中的子目录

c - 如何使用 gethostbyname() 检测您的 IP/名称

c - 在 POSIX 中,main(void) 可以恢复命令行参数吗?

使用 curses.h 库的光标跳转

c - 哪里可以找到 `stdin`宏声明?

android - 对 NDK 中的不同库使用 ndk-build 和 cmake

c - 为什么我们在 C 中需要枚举数据类型,尽管它比通过一个变量字符串甚至 #define 实现它使用更多的内存

c - 使用 memcmp 比较 0 字节的缓冲区

c - 如何使我的代码按升序对输入进行排序?

python - 在旧的 CE 设备上运行 Python 时遇到问题