[英]scanf() reads a minus sign and doesn't put it back
我试图从命令行中读取非负数或减号,并且如果输入不是程序终止的输入之一,则执行以下操作:
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()
来读取输入,然后对其进行检查,但是我不想这样做很麻烦。
最好的方法是将整行文本读取到缓冲区中, 然后检查缓冲区的内容,而不是依赖于依赖于推回的易碎的读取链。
只需使用fgets()
和sscanf()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.