我正在尝试将字符串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
以避免只读变量赋值错误。
答案 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]
。