こんにちは、char * ポインターを char [] 配列にコピーしようとしています。
これはこれまでの私のコードです
char * string_add(char * base, char * toAdd)
{
char * string=malloc(strlen(base)+streln(toAdd)+1);
sprintf(string,"%s%s",base,toAdd);
char returnString[strlen(string)+1];
// here comes my problem:
memcpy(returnString,string,strlen(string)+1);
// want to add free(string) here
return returnString;
}
このような関数を使用してコードを保存したいと考えています。割り当てられたすべてのメモリの世話をしたくありません。私も試しました
memcpy(&returnString,string,strlen(string)+1);
および strcpy と strncpy を使用したいくつかのバリアント。しかし、次の問題は解決しません。
次のように関数を 2 回呼び出す場合:
int main(int argc, char * argv[])
{
char * str1=string_add(argv[1],"-test1");
char * str2=string_add(argv[1],"-test2");
printf("%s, %s", str1,str2);
}
出力は次のようになります。
abc-test2, abc-test2
どうすればこれを理解できますか?
前もって感謝します!