#include
#include
#include
#include
#define CHOICE 2 #define FILEPATH "/root/date.c" char global_buffer[120]; //NO.1 使用全局声明的数组 #if CHOICE == 1 char *local_time(char* filename) { struct tm *tm_ptr; struct stat stat_block; stat(filename , &stat_block); tm_ptr = localtime(&stat_block.st_mtime); strftime(global_buffer, sizeof(global_buffer), "%a %b %e %T %Y",tm_ptr); printf("using global array!\n"); return global_buffer; } /* NO.2 显式分配一些内存,保存返回的值*/ #elif CHOICE == 2 char *local_time(char* filename) { struct tm *tm_ptr; struct stat stat_block; char *buffer = (char*)malloc(120); stat(filename , &stat_block); tm_ptr = localtime(&stat_block.st_mtime); strftime(buffer, 120, "%a %b %e %T %Y",tm_ptr); printf("using malloc memory!\n"); return buffer; } //No.3 使用静态数组 #else char *local_time(char* filename) { struct tm *tm_ptr; struct stat stat_block; static char buffer[120]; stat(filename , &stat_block); tm_ptr = localtime(&stat_block.st_mtime); strftime(buffer, sizeof(buffer), "%a %b %e %T %Y",tm_ptr); printf("using static array!\n"); return buffer; } #endif int main() { char *s = FILEPATH; #if CHOICE == 1 //char *ptr = (char *) malloc(120); char *p = local_time(s); printf("%s\n",p); #elif CHOICE == 2 char *p = local_time(s); printf("%s\n",p); //free(p); #else char *p = local_time(s); printf("%s\n",p); #endif }