首页 > 代码库 > C专家编程之编译器日期被破坏程序
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 == 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 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。