C言語に詳しい方、どなたか回答くださると助かります。
前提・実現したいこと
別の関数内で生成した静的な文字配列をmain関数からコンソールに出力したい。
発生している問題・エラーメッセージ
『新・明解C言語 中級編』のサンプルコードです。
tm型の構造体を引数として受け取り、現在時刻の文字列に変換して返すメソッドがあるのですが、
この戻り値をmain関数から出力するにはどうすれば良いのでしょうか?
テキストにはこの関数のコードしか載っていません。
該当のソースコード
C
1char *asctime2(const struct tm *timeptr) { 2 const char wday_name[7][3] = { 3 "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" // 要素数1個の配列が7つ(7行)ある 4 }; 5 const char mon_name[12][3] = { 6 "Jan", "Feb", "Mar", "Apr", "May", "Jun",// 要素数1個の配列が12個(12行)ある 7 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" 8 }; 9 static char result[25]; 10 11 sprintf(result, "%.3s %.3s %02d %02d:%02d:%02d %4d", 12 wday_name[timeptr->tm_wday], mon_name[timeptr->tm_mon], 13 timeptr->tm_mday, timeptr->tm_hour, timeptr->tm_min, 14 timeptr->tm_sec, timeptr->tm_year + 1900); 15 return result; 16}
試したこと
char*型のポインタとして受け取ってforループを使って出力しようとしたのですが、
Segmentation fault: 11
が出ました。
戻り値は配列の先頭のポインタのみで、配列としてアクセスできないのが原因では、と考えていますが、
そうするとmain関数から文字列を出力する方法が分かりません。
回答3件
あなたの回答
tips
プレビュー