gpt4 book ai didi

c - 用 C 中的字符替换子数组

转载 作者:行者123 更新时间:2023-11-30 20:04:19 26 4
gpt4 key购买 nike

我有一个数组,我需要用一个字符替换该数组中的子数组。

unsigned char * data = {'a','b','c','d','e'};

我需要删除“a”、“b”“c”并插入“R”最终的数组将是: unsigned char * data = {'R','d','e'};只有 3 个元素。我怎样才能用 C 语言做到这一点?

最佳答案

您说您将 data 视为数组,因此最好将 data 声明为数组而不是指针。 (您的代码现在的方式是通过将字符 'a' 转换为 char * 指针来错误地初始化一个指针。这样它就不会指向任何地方.)

您可以通过分配给数组元素来替换字符,并且可以使用 memmove 移动数组中的部分数据。

这意味着您可能想要这样的东西:

unsigned char data[] = {'a','b','c','d','e'};
data[0] = 'R';
memmove(data + 1, data + 3, sizeof(data) - 3);

memmove 调用将 sizeof(data) - 3 字节的数据从地址 data + 3 移动到地址 data + 1 。当您在其之间移动数据字节的内存区域重叠时,memmove 函数甚至可以工作。

如果您随后打印数据的相关部分:

fwrite(data, 1, sizeof(data) - 2, stdout);
putchar('\n');

这将为您提供输出:

Rde

但是,请注意数组的大小不会改变。它仍然是五个字符长。因此,将 abc 替换为超过三个字符的内容将不会像这样工作。此外,该数组不是以 null 结尾的字符串,而后者是 C 中字符序列的更常见方式。

如果您更喜欢使用字符串“abcde”而不是您现在正在做的事情(但为什么称其为“数据”?),请在此答案下方添加评论,我会扩展它。

关于c - 用 C 中的字符替换子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41839756/

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