作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我们都知道溢出会导致麻烦,这就是 strn* 存在的原因——而且大多数时候它们是有意义的。但是,我已经看到使用 strncmp 比较命令行参数的代码,如下所示:
if(... strncmp(argv[i], "--help", 6) == 0
现在,我会认为这是不必要的,甚至可能是危险的(对于较长的参数,很容易误算文字中的字符)。
strncmp 在空值处停止,并且代码已经假定 argv[i] 以空值终止。任何字符串文字都保证以 null 结尾,那么为什么不使用 strcmp?
也许我遗漏了什么,但我已经看过几次了,这一次我很感兴趣,想问一下。
最佳答案
是的,它是绝对安全的,并且被认为是标准做法。字符串文字保证以正确的 null 终止。
关于c - 我是否正确认为 strcmp 对于文字是等价的(并且安全的)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/448563/
我是一名优秀的程序员,十分优秀!