This question already has answers here:
scanf not taking in data
(3 个回答)
7年前关闭。
我在使用 C 中的嵌套条件运算符时遇到了一些麻烦。
我的印象是,如果输入了“Y”或“N”,最后一行代码将返回 1 或 0,或者如果输入了意外字符则再次调用自身。相反,无论输入如何,它都会不断地调用自己。
(3 个回答)
7年前关闭。
我在使用 C 中的嵌套条件运算符时遇到了一些麻烦。
int is_correct() {
char YN ;
printf( "Y or N : " ) ;
scanf( "%c", &YN ) ;
YN = toupper( YN ) ;
return ( YN == 'Y' )? 1 : ( YN == 'N' )? 0 : is_correct() ;
}
我的印象是,如果输入了“Y”或“N”,最后一行代码将返回 1 或 0,或者如果输入了意外字符则再次调用自身。相反,无论输入如何,它都会不断地调用自己。
最佳答案
可能是扫描失败了,而您没有对其进行验证。
您没有指定“连续”是否意味着“无需停止阅读更多输入”,这当然应该这样做。
请注意,例如, toupper()
使用 int
类型的参数和结果,并且期望 unsigned char
类型的值可能会在那里遇到未定义的行为。
这是 ctype.h
函数的一个非常令人困惑的方面。如果数据来自文本( unsigned char
)缓冲区,我倾向于在调用中转换为 char
。
添加 printf()
调用以在最后一行之前打印出 YN
的值。
关于c - C 中的嵌套条件运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17384246/
10-09 15:53