我必須在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