#include <stdio.h>
#include <string.h>
char mystr2cpy (*char a, *char b)
{
char c;
strcat(a, b);
strcpy(c, a);
return 0;
}
一応ネット等で調べはしたのですが結局原因がわかりません、、、、、
)は書いているのになんで??という質問です、なお自分は超初心者なので優しく教えてもらえると嬉しいです。
引数の書き方と戻り値の型が違う。
変数cはchar型1バイトしかないので、
こういう書き方はできないはず。
もともとのコードではchar型を返すことになっているのに0を返すのは不自然。
#include <stdio.h>
#include <string.h>
char *mystr2cpy(char *a, char *b)
{
// staticがないと、関数内部のautomaticなローカル変数のアドレスを返そうと
// することとなる。ところが、cは本関数を抜けた瞬間に雲散霧消してしまう。
// main関数で正しく受け取れない。
static char c[256]; // aとbを連結した結果を格納できる十分な大きさであること
strcpy(c, strcat(a, b));
return c;
}
int main(void)
{
char a[] = "abcde", b[] = "ABCDE";
printf("%s\n", mystr2cpy(a, b));
return 0;
}
間違っていますね。box さんが書きました:合ってるかどうかは知らないけど。