合并指针字符串时需要的指针操作数

时间:2019-01-28 03:00:38

标签: c

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

我期望的输入/输出:

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

我的concat函数:

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以避免只读变量赋值错误。

1 个答案:

答案 0 :(得分:1)

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

实际上,final[max]被定义为*(final + max),这意味着获取指针final,通过max元素进行调整,然后引用{{1 }}就是那个位置。 char将是*final[max],这不是您想要的。

不清楚您打算用**(final + max)完成什么。此时,final[max] = *first;指向您刚刚写给它的first,因此'\0'会将final[max] = *first;设置为final[max]