文字列リテラルを返却する場合は静的なので問題ないんだけど、
(Char型への)ポインタであるローカル変数を返却しようとするとエラーが出る。
関数が呼ばれた後に、ローカル変数が破棄されていることが原因らしい。
こういうときにmallocを使う。
http://www-ui.is.s.u-tokyo.ac.jp/~tera1984/dat/struct.txt
#include <stdio.h> #include <stdlib.h> #include <string.h> char *msg(void){ return "Hello\n"; } char *msg2(void){ char *hoge = (char *)malloc((size_t) 10); //メモリを確保 strcpy(hoge,"Hello\n"); return hoge;//呼び出し後に破棄されるのでアドレスを渡せない } int main(void){ char *str = msg(); printf(str); char *str2 = msg2(); printf(str2); free(str2);//メモリを解法 return 0; }