gpt4 book ai didi

C - 有没有办法处理中间有 NULL 字符的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:08 26 4
gpt4 key购买 nike

是否可以在除结尾之外的某处使用带有 NULL 字符的字符串并使用它们?比如获取它们的大小,使用 strcat 等?

我有一些想法:

1) 编写您自己的函数来获取长度(或其他东西),它将遍历一个字符串。如果遇到 NULL 字符,它将检查字符串的下一个字符。如果它不是 NULL - 继续计算字符数。但它可能(并且将会!)最终导致您在读取 ​​char 数组之外的内存时出现这种情况。所以这是个坏主意。

2) 使用sizeof(array)/sizeof(type),例如sizeof(input)/sizeof(char)。我认为这会非常有效。

对于如何做到这一点,您还有其他想法吗?也许有一些我不知道的功能(C 新手警报 :))?

最佳答案

我能想到的唯一真正安全的方法是使用“Pascal”类型的字符串(即具有字符串 header 和与其关联的各种其他数据的字符串)。

像这样:

typedef struct {
int len, allocated;
char *data;
} my_string;

然后您将不得不自己实现几乎每个字符串操作函数。保持“字符串的长度”和“分配的大小”允许您拥有比当前内容更大的分配,这可能会使重复的字符串连接更便宜(允许分摊 O(1) 追加)。

关于C - 有没有办法处理中间有 NULL 字符的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com