Min*_*any 1 c command-line input scanf
我试图从命令行读取非负数或减号,如果输入不是其中之一,程序将终止,所以我执行了以下操作:
while((scanf("%d", &n)==1 && n>-1 && (input=1)) || (scanf("%c", &delete)==1 && delete=='-' && (input=2)))
Run Code Online (Sandbox Code Playgroud)
input是一个整数,表示读取的是数字或减号(input=1&input=2在循环中是有意的)。
现在,该程序适用于数字,但如果我输入一个减号,第一个程序scanf()会读取它,但不会将其明显地放回去,因此第二个scanf()程序找不到任何内容并终止程序。
但是,如果我输入--(两个减号),第一个scanf()读取一个,第二个scanf()读取另一个,并且一切正常。
命令行的输入不能更改,它必须是一个减号。解决这个问题的最佳方法是什么?
请注意,我确实知道如何使用getchar()读取输入然后检查它,但我不想这样做很麻烦。
最好的方法是将整行文本读入缓冲区,然后检查缓冲区的内容,而不是依赖于依赖推回的脆弱读取链。
只需使用fgets()和sscanf()。