質問: { "Jan", "Feb", "Mar", "Apr", "May", "Jun",// 要素数1個の配列が12個(12行)ある "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; static char result[25]; sprintf(result, "%.3s %.3s %02d %02d:%02d:%02d %4d", wday_name[timeptr->tm_wday], mon_name[timeptr->tm_mon], timeptr->tm_mday, timeptr->tm_hour, timeptr->tm_min, timeptr->tm_sec, timeptr->tm_year + 1900); return result; } ``` ### 試したこと char*型のポインタとして受け取ってforループを使って出力しようとしたのですが、 Segmentation fault: 11 が出ました。 戻り値は配列の先頭のポインタのみで、配列としてアクセスできないのが原因では、と考えていますが、 そうするとmain関数から文字列を出力する方法が分かりません。
回答: 順序良く書くなら、 1. asctime2関数の戻り値の型と同じ型の変数を宣言 2. asctime2関数の戻り値を変数で受け取る。 3. 受け取った変数をprintfで出力。 これだけですね。 コードにすると。 ``` main() { char *ret; ~ ret = asctime2(x); printf("%s\n", ret); } ``` 簡潔に書くならmaisumakunさんの回答参照。