我正在尝试从命令行读取非负数或减号,如果输入不是其中之一,程序将终止,所以我执行了以下操作:
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()
来读取输入然后检查它,但我不想这样做很麻烦。