因此,作爲一個任務的一部分,我們一直在考慮這個骨架功能來完成:關於C中給定的格式轉換time_t表示爲一個字符串
char *time2str(time_t time) {
static char *str_fmt = "%02d/%02d/%4d %02d:%02d";
char *time_s = ""; // appropriate string allocation here
return time_s;
}
但是我很新的C和掙扎讓我的頭左右我在做什麼錯誤(也指針是如何工作的)......我一直在嘗試使用localtime
得到struct
與我可以訪問我需要添加到字符串中給出的具體值格式。事情是這樣的:
char *time2str(time_t time) {
static char *str_fmt = "%02d/%02d/%4d %02d:%02d";
struct tm *info;
info = localtime(&time);
char *time_s = (str_fmt, info->tm_mday, info->tm_mon...etc...);
return time_s;
}
不過我剛開始在編譯警告和錯誤無論怎樣我嘗試做(除去str_fmt
,只是把在報價格式在time_s
開始,使用info.tm_mday
等,而不是info->tm_mday
)。然而,似乎沒有任何影響,我無法在網上找到任何有助於我按照我們的要求解決問題的任何內容。
誰能幫助?可能值得一提的是,我們正在使用MINIX系統調用在MINIX 3.2.1上執行此操作。
有趣的代碼上塊正是它是如何給我們的「骨架」的實現,我是假設它是正確的 – transiti0nary
我認爲你的老師希望你'malloc',然後分配使用'sprintf'。 –
如果只有POSIX有['asprintf()'](http://man7.org/linux/man-pages/man3/asprintf.3.html)。唉,它不是POSIX。 (雖然,它是在Linux的/ GNU/MacOS的/最BSD版本可用。)我不知道有多少緩衝區溢出將是可以避免的,如果我們使用它,而不是'的malloc()'+'的snprintf()'(或更糟的是,'的sprintf()')。 –