c - 如何限制用户只能输入整数并拒绝 scanf 中的任何其他字符?

标签 c input scanf

我正在尝试获取用户输入并允许他们只输入一个整数,这也是正数。

我想弄清楚这个任务

printf("Enter the first and second number in whole number: ");
scanf("%d,%d", &first, &second);

if (input != '\n') //notice this line I'm trying to check if is a character//
    printf("Error! CHARACTER NOT ACCEPTED!!\n");

else if (First <= 0)
    printf("Error! First must be a positive value!\n");

else if (Second <= 0)
    printf("Error Second must be a positive value!\n");

上面的代码将检查两件事。一,如果用户输入了我想要的字符。第二,如果数字是正数。

我如何兑现这些支票?

最佳答案

读取整行(使用 getline),然后将其转换为数字,可能使用 strtol(并测试结束指针)。

或者对scanf使用%n格式并测试scanf返回的(成功转换的)数量

关于c - 如何限制用户只能输入整数并拒绝 scanf 中的任何其他字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8194521/

相关文章:

c - 结构不存储值和 scanf 失败

c - 删除函数正在随机化链表的值

c - UEFI 使用 RT->GetVariable 读取变量

c++ - 如何从文本 C++ 中获取 double

JavaScript 从文本框文本更改背景图像

c - 简单单位转换程序 - scanf 与 do-while 循环的问题(C 编程)

c - Scanf 和地址运算符 (&) 在 for 循环内不起作用

c - 在传递给 glutDisplayFunc() 的函数中打印全局指针值时程序退出

c - "Makes Pointer from Integer without a Cast"- 如何满足 GCC?

jquery - IE10 - 选择要上传的文件后必须单击 2 次才能提交表单