为函数提供最大字符串长度

Supply maximum string length to a function

本文关键字:字符串 函数      更新时间:2023-10-16

当定义一个具有字符数组作为其参数之一的函数时,是否建议始终传递最大数组长度以及一个额外的参数?例如:

int somefunction(char* inputarray, int maxsizeofarray)

c风格字符串通常以字符结束。大多数(如果不是全部的话)标准库中的函数,如strcpystrcmp,都期望(并遵守)这个约定。我建议您编写的任何新函数都遵循相同的约定。

话虽如此,在c++(相对于C)中,我根本不会使用char*。相反,我会使用标准的std::string类。

这完全取决于功能。例如,当您从最后一个元素遍历char array到第一个元素时,在这种情况下,传递size是明智的。但是只在C语言中。在c++中,你有std::string .

当函数写入数组时,或者当函数确定数组大小有问题时(因为它不一定遵循NUL终止符等约定),传递数组大小是正常的。例如:

int read(char* buffer, size_t n);
char *strncat(char *dest, const char *src, size_t n);
struct BinaryBlob
{
    BinaryBlob(const char* buffer, size_t n);
    ...
};