我们都知道溢出问题可能会引发的麻烦,这就是为什么strn*存在的原因,而且大多数情况下它们是有意义的。但是,我看到过一些代码使用strncmp来比较命令行参数,如下所示:
if(... strncmp(argv[i], "--help", 6) == 0
现在,我认为这是不必要的,甚至可能是危险的(对于较长的参数,很容易在文字量上出错)。
strncmp会在遇到空字符时停止,代码已经假定argv [i]以空字符结尾。任何字符串文字都保证以空字符结尾,那么为什么不使用strcmp呢?
也许我错过了什么,但我已经看到过几次了,这次引起了我的兴趣。
--help=foobar
的内容,但不幸的是它也会匹配类似于--helper-program
的内容。我认为这段代码有缺陷。 - R.. GitHub STOP HELPING ICE