【发布时间】:2012-05-18 18:16:51
【问题描述】:
我正在尝试从命令行读取非负数或减号,如果输入不是其中之一,程序将终止,因此我执行了以下操作:
while((scanf("%d", &n)==1 && n>-1 && (input=1)) || (scanf("%c", &delete)==1 && delete=='-' && (input=2)))
input 是一个整数,表示读取的是数字还是减号(循环中的input=1 和input=2 是有意的)。
现在,该程序适用于数字,但如果我输入一个减号,第一个 scanf() 会读取它,但不会明显地将其放回原处,因此第二个 scanf() 什么也没找到并终止程序。
但是,如果我输入 --(两个减号),第一个 scanf() 读取一个,第二个 scanf() 读取另一个,一切正常。
命令行的输入不能改变,它必须是一个减号。解决这个问题的最佳方法是什么?
请注意,我知道如何使用 getchar() 读取输入然后检查它,但我不想这样做很麻烦。
【问题讨论】:
-
那是一些非常讨厌的代码......
标签: c command-line input scanf