使用 strlen() 有哪些缺点?
如果有时在 TCP 通信中字符串中出现 NULL 字符,那么我们会发现字符串的长度最多只能为 NULL 字符。
我们无法找到字符串的实际长度。
如果我们对此 strlen 函数进行其他替代,它也会停止在 NULL 字符处。那么我可以使用哪种方法来找出 C 中的字符串长度
最佳答案
要读取“TCP 通信”,您可能正在使用read
。 read
的原型(prototype)是
ssize_t read(int fildes, void *buf, size_t nbyte);
返回值是读取的字节数(即使它们是0
)。
因此,假设您要读取 10 个字节,所有字节均为 0。您有一个足以容纳所有数据的数组
int fildes;
char data[1000];
// fildes = TCPConnection
nbytes = read(fildes, data, 1000);
现在,通过检查 nbytes
你知道你已经读取了 10 个字节。如果您检查 data[0]
到 data[9]
,您会发现它们有 0
;
关于c - 嵌入式域中 strlen() 的缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9173017/