我查阅了手册中的功能,但我仍然没有得到这个。根据编写代码的人,如果用户输入“y”,则执行该功能(此处未显示)。但是,由于!
,我认为如果用户输入“y”以外的其他内容,函数(此处未显示)将会执行。
请解释(我是一个相对新手,所以尽可能多的细节会有所帮助)。谢谢
if(!strncasecmp(trim(fgets(STDIN)),'y',1))
答案 0 :(得分:10)
fgets(STDIN)
- 从标准输入中读取一个字符串(在您的情况下为键盘)。
trim
- 删除用户输入周围的任何空格。因此,如果用户输入' y'
或'y '
,则会将其转换为'y'
strncasecmp
- 用户可以输入大写Y
或小写y
,此功能可帮助您比较不区分大小写的方式。如果比较成功,此函数也会返回0
,然后您使用!
(非运算符)将0
更改为1
,以便if
测试通行证。
您可以将其重写为:
if(strncasecmp(trim(fgets(STDIN)),'y',1) == 0)
答案 1 :(得分:4)
如果字符串之间存在无差异,则函数strncasecmp返回0,因此!
检查它们是否相等。