-1 && (input=1)) |-6ren">
gpt4 book ai didi

c - scanf() 读取一个减号并且不把它放回去

转载 作者:太空宇宙 更新时间:2023-11-04 06:39:29 24 4
gpt4 key购买 nike

我正在尝试从命令行读取一个非负数或一个负号,如果输入不是其中之一,程序将终止,所以我执行了以下操作:

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()

关于c - scanf() 读取一个减号并且不把它放回去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10529530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com