我必须在C中创建标准库的一些元素的副本,并且必须创建一个strcat的副本。所以我必须创建一个连接C中两个字符串的函数。我知道C中的数组无法更改分配的大小。我被允许使用的唯一fonction是副本我做了strlen的,中的strstr,和write()...我的代码如下所示:如何创建一个strcat的副本?
char *my_strcat(char *dest, char *src)
{
int dest_size;
int src_size;
int current_pos;
int free_space;
int pos_in_src;
src_size = my_strlen(src);
dest_size = my_strlen(dest);
while (dest[current_pos] != '\0')
current_pos = current_pos + 1;
free_space = dest_size - current_pos;
if (free_space < src_size)
return (0);
while (src[pos_in_src] != '\0')
{
dest[current_pos] = src[pos_in_src];
pos_in_src = pos_in_src + 1;
current_pos = current_pos + 1;
}
return (dest);
}
但我不知道如何申报我的蒸馏水和主要是src。 我不知道如何创建一个大尺寸的数组,并将其声明为像dest =“Hello \ 0”这样的字符串,但该数组仍然包含6个以上的字符。
你能帮助我吗?
为什么不使用指针和动态内存分配?你不允许吗? – Cherubim
目标大小不是'strlen(dest)' - 它只是当前长度。 – 4386427
从man7.org:'这些字符串可能不重叠,并且 dest字符串必须有足够的空间用于结果。如果dest为 不够大,程序行为是不可预测的。换句话说:您不必担心内存(重新)分配。来电者负责。 – 4386427