什么是处理意味着字符串的最佳实践 函数的参数,即
int use_the_force(const char *dark_side_file_name) {
char *safe_force_it_is = Yoda(dark_side_file_name);
return useTheForceYouCan(safe_force_it_is);
}
假设调用者是 Darth Vader,Yoda 会怎么做以确保当我们在“safe_force_it_is”上使用 strlen/strnlen 或 memchr 之类的东西时,有一个 NULL 终止符并且我们不会跑到黑暗面当我们使用我们期望的有效字符串时?
最佳答案
获取一个未知长度的字符串并试图弄清楚它是否以 null 终止是不合理的。如果不是,您怎么知道什么时候停止?
可能有一些疯狂的、不可移植的想法,但它们都不是一个健全的程序所必需的。您需要知道输入以 null 结尾,否则您需要知道它的最大长度。
关于c - 不受信任的字符指针参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26012051/