gpt4 book ai didi

c - 整数的scanf获取到字符时如何处理异常

转载 作者:太空狗 更新时间:2023-10-29 16:07:27 25 4
gpt4 key购买 nike

下面的简单程序会在输入字符时出现无限循环,尽管它的意思是区分字符和数字。如何使用 scanf 的返回值来测试 scanf 是否得到了一个应该是数字的字符?

#include <stdio.h>

int main() {
int n;
int return_value = 0;

while (!return_value) {
printf("Input a digit:");
return_value = scanf("%d", &n);
}

printf("Your input is %d\n", n);

return 0;
}

最佳答案

作为Joachim在他的回答中指出,该字符不会被 scanf 消耗并存在于缓冲区中,在下一次迭代 scanf 再次读取相同的字符并再次将其留在缓冲区中等等。这导致无限循环。

您需要在下一次迭代之前消耗此字符。只需在 return_value = scanf("%d", &n);

行之后放置一个 getchar()
return_value = scanf("%d", &n);
while(getchar() != '\n'); // will consume the charater

关于c - 整数的scanf获取到字符时如何处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23825754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com