【发布时间】:2010-10-01 16:54:39
【问题描述】:
我们都知道溢出可能导致的问题,这就是 strn* 存在的原因——而且大多数时候它们是有意义的。但是,我已经看到使用 strncmp 来比较命令行参数的代码,如下所示:
if(... strncmp(argv[i], "--help", 6) == 0
现在,我认为这是不必要的,甚至可能是危险的(对于较长的参数,很容易误算文字中的字符)。
strncmp 在空值上停止,并且代码已经假定 argv[i] 是空终止的。任何字符串文字都保证以空值结尾,那么为什么不使用 strcmp 呢?
也许我遗漏了一些东西,但我已经看过几次了,这一次引起了我的兴趣。
【问题讨论】: