gpt4 book ai didi

c - 合并指针字符串时所需的指针操作数

转载 作者:行者123 更新时间:2023-11-30 14:42:31 24 4
gpt4 key购买 nike

我正在尝试将字符串 2 连接到字符串 1 后面,然后将该字符串分配给最终字符串。所有这些字符串都作为指针传递到函数中。当我将最终字符串指针设置为两个字符串时,出现错误。

我的预期输入/输出:

concat("string", 10, "hello", "world");
--> char *final should be: helloworld

我的连接函数:

void concat(char *final, size_t max, const char *first, const char *second)
{
//final holds first+second
//max is the size of first and second strings combined
//first and second are strings

while (*first != '\0') {
first++;
}
while (*second != '\0') {
*first = *second;
first++;
second++;
}
*first = '\0';
*final[max] = *first; // Error on this line
}

我的错误(第 15 行):

Indirection requires pointer operand ('int' invalid)

编辑:可以删除 const 以避免只读变量赋值错误。

最佳答案

final 是指向 char 的指针。 final[max] 是相对于 final 位于 max 位置的字符。它实际上包含一个 * 操作,因此您不需要它。在 *final[max] = *first; 中,不需要第一个 *

事实上,final[max]被定义为*(final + max),意思是取指针final,调整它由 max 元素组成,然后引用该位置的 char*final[max] 将是 **(final + max),这不是您想要的。

尚不清楚您打算使用 final[max] = *first; 实现什么目的。此时,first 指向您刚刚写入的'\0',因此final[max] = *first;会将 final[max] 设置为 '\0'

关于c - 合并指针字符串时所需的指针操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54395011/

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