標籤:使用 io ar amp size file har c
#include<stdio.h>#include<time.h>#include<stdlib.h>#include<sys/stat.h>#define CHOICE 2#define FILEPATH "/root/date.c"char global_buffer[120];//NO.1 使用全域聲明的數組#if CHOICE == 1char *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 == 2char *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;}#endifint main(){char *s = FILEPATH;#if CHOICE == 1//char *ptr = (char *) malloc(120);char *p = local_time(s);printf("%s\n",p);#elif CHOICE == 2char *p = local_time(s);printf("%s\n",p);//free(p);#elsechar *p = local_time(s);printf("%s\n",p);#endif}