オーバーフローが原因で問題が発生する可能性があることは誰もが知っています。これがstrn*が存在する理由です。ほとんどの場合、それらは理にかなっています。ただし、次のようにstrncmpを使用してコマンドラインパラメーターを比較するコードを見てきました。
if(... strncmp(argv[i], "--help", 6) == 0
さて、これは不要で、おそらく危険でさえあると思いました(パラメータが長いと、リテラル内の文字を誤算しやすくなります)。
strncmpはnullで停止し、コードはすでにargv[i]がnullで終了していると想定しています。文字列リテラルはnullで終了することが保証されているので、strcmpを使用してみませんか?
何かが足りないのかもしれませんが、これを何度か見たことがあり、今回は質問するほど興味をそそられました。