プロが教える店舗&オフィスのセキュリティ対策術

宣言する関数の形が決まっている状態で、
str1とstr2の文字列をこの順に引っ付けてstrに保存して出力させたいです。

関数の形が指定されているのですが l1,l2をどう使えば良いかわかりません。
またなぜこのコードが実行されないのか、ただしいコードを教えてください。
#include<stdio.h>
void concat(char* str, char* str1, char* str2, int l1, int l2);

int main(void) {
char* str;
char str1[10];
char str2[10];




int len1, len2;

printf("Input size of str1:"); scanf("%d", &l1);
printf("str1:"); scanf("%s", &str1);


printf("Input size of str2:"); scanf("%d", &l2);
printf("str2:"); scanf("%s", &str2);


concat(str, str1, str2, l1, l2);
printf("result: %s", str);

return 0;

}

void concat(char* str, char* str1, char* str2, int l1, int l2) {



while (*str1 != '\0');
str1--;
while (((*str1++) = (*str2++)) != '\0');

*str = *str1;




}

A 回答 (2件)

最低限「関数の仕様」がわからんと話にもならん.



どういう処理をする関数で, それぞれの引数はどのような意味を持っているんだい?

あと, まあたまに見るんだけどこの場合
scanf("%s", &str1);

scanf("%s", &str2);
は (現実的には動くだろうけど) アウトだ.
    • good
    • 1

strncat を使って結合を二回しましょう


https://linuxjm.osdn.jp/html/LDP_man-pages/man3/ …

結合の結果を保存するために、最大 10+10 バイトの容量を確保した str を用意するのを忘れずに
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!