OK、文字列を返すために、以下の方法が正常に動作します:、Cで正しく文字列を返す複数回
char* SU(double V) {
static char Str[80];
// Do something
return Str;
}
printf("%s", SU(A));
しかし、メモリ内の文字列のスペースがの終わりに同じであるので、以下は黙って失敗します。両方の呼び出し:
printf("%s %s", SU(A), SU(B));
どうすればいいですか?私はalloca()を見ていましたが、alloca()で割り当てられた文字列を返すことはできないと思いますか?
可能な複製(http://stackoverflow.com/questions/31411831/proper-way-to-return-a- string-in-c) –
コールサイトに2つのバッファを割り当ててSUに渡すのはなぜですか? – user694733
関数はメモリを割り当て、この新たに割り当てられたメモリへのポインタを返すことができます。多くのプログラマーは、メモリを割り当てる関数を解放する関数を持つ方が安全な戦略だと考えているので、このアプローチが嫌いです。 –