繁体   English   中英

scanf()读取减号,并且不放回去

[英]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=1input=2 )。

现在,该程序适用于数字,但是如果我输入减号,则第一个scanf()会读取它,但不会明显地把它放回去,因此第二个scanf()找不到任何内容并终止程序。

但是,如果我输入-- (两个负号),则第一个scanf()读取一个,而第二个scanf()读取另一个,所有这些都可以正常工作。

命令行中的输入无法更改,必须为一个减号。 解决此问题的最佳方法是什么?

请注意,我确实知道如何使用getchar()来读取输入,然后对其进行检查,但是我不想这样做很麻烦。

最好的方法是将整行文本读取到缓冲区中, 然后检查缓冲区的内容,而不是依赖于依赖于推回的易碎的读取链。

只需使用fgets()sscanf()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM