標準ライブラリのいくつかの要素のコピーをC言語で作成する必要があり、strcatのコピーを作成する必要があります。だから私はCで2つの文字列を連結する関数を作成する必要があります。私はCの配列は、割り当てられたサイズを変更することはできません知っている。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);
}
しかし、私は私のDESTを宣言する方法を知っているとしていない:私は使用を許可されてるだけfonctionは、私はstrlenを、はstrstrで作られた、と私のコードは次のようになります...)(書き込みコピーでありますメインのsrc。 大きなサイズの配列を作成する方法を知りません。dest = "Hello¥0"のような文字列として宣言しますが、この配列には6文字以上の文字が含まれている必要があります。
お願いします。
なぜポインタと動的メモリ割り当てを使用しないのですか?許可されていませんか? – Cherubim
宛先のサイズは 'strlen(dest)'ではなく、現在の長さにすぎません。 – 4386427
man7.orgから: '文字列は重複していなくてもよく、 dest文字列に結果のための十分なスペースが必要です。 destが で十分でない場合、プログラムの動作は予測不可能です。つまり、メモリ(再)割り当てについて心配する必要はありません。発信者が責任を負います。 – 4386427