请教strftime函数的问题

china34420 2016-08-01 09:58:55

//申请存放时间字符串的内存空间
m_date = (char *)malloc(sizeof(char) * strlen("2000-01-01") + 1);
m_time = mktime(&p);
//格式化本机时间
strftime(m_date, strlen(m_date), "%Y-%m-%d", &p);


我用上面的代码,在VS直接调试的时候可以正确输出,但是运行exe的时候却什么也没输出? 请大家指教
...全文
241 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-08-01
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <sys/timeb.h>

struct tm st;
time_t tt;
char mon[4];
char mn[12][4]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
int i;
char timstr[27];
char tmpbuf[128];
struct _timeb tb;
int tz;
char c;

void main() {
    strcpy(timstr,"08/Dec/2011:15:25:03 +0800");
    sscanf(timstr,"%2d/%3s/%4d:%2d:%2d:%2d",&st.tm_mday,mon,&st.tm_year,&st.tm_hour,&st.tm_min,&st.tm_sec);
    for (i=0;i<12;i++) if (0==stricmp(mn[i],mon)) {st.tm_mon=i; break;}
    st.tm_year-=1900;
    tt=mktime(&st);
    if (-1!=tt) {
        strftime(tmpbuf,128,"%Y-%m-%d %H:%M:%S\n",localtime(&tt));
        printf(tmpbuf);//2011-12-08 15:25:03
    } else {
        printf("[%s] is Invalid time string!\n",timstr);
    }

    _ftime(&tb);
    strftime(tmpbuf,128,"%m/%b/%Y:%H:%M:%S",localtime(&tb.time));
    tz=-tb.timezone;
    c=(tz>0)?'+':'-';
    tz=(tz>0)?tz:-tz;
    sprintf(tmpbuf,"%s %c%02d%02d\n",tmpbuf,c,tz/60,tz%60);
    printf(tmpbuf);//12/Dec/2011:17:36:41 +0800
}
现在的码农竟然99%都不会在cmd窗口中输入cd命令设置当前目录为程序所在目录,输入程序名运行程序了!
china34420 2016-08-01
  • 打赏
  • 举报
回复
引用 4 楼 paschen 的回复:
[quote=引用 2 楼 china34420 的回复:] [quote=引用 1 楼 paschen 的回复:] 代码最后加上getc har();
是不是 getchar(); 加上也没有作用[/quote] 就没见到你有输出语句[/quote] 代码是这样子的:
	time_t m_time;
	//本机时间的结构体
	struct tm p;
	//获取时间
	time(&m_time);

	//获取本机时间
	localtime_s(&p, &m_time);

	//申请存放时间字符串的内存空间
	char *m_date = (char *)malloc(sizeof(char) * strlen("2000-01-01") + 1);

	m_time = mktime(&p);
	
	//格式化本机时间
	strftime(m_date, strlen(m_date), "%Y-%m-%d", &p);
	getchar();

	MsgBox::show(m_date);

	return 0;
china34420 2016-08-01
  • 打赏
  • 举报
回复
引用 4 楼 paschen 的回复:
[quote=引用 2 楼 china34420 的回复:] [quote=引用 1 楼 paschen 的回复:] 代码最后加上getc har();
是不是 getchar(); 加上也没有作用[/quote] 就没见到你有输出语句[/quote] 哦,最后有句 MsgBox::show(m_date); 的,用于显示对话框的,没有拷贝出来
paschen 版主 2016-08-01
  • 打赏
  • 举报
回复
引用 2 楼 china34420 的回复:
[quote=引用 1 楼 paschen 的回复:] 代码最后加上getc har();
是不是 getchar(); 加上也没有作用[/quote] 就没见到你有输出语句
china34420 2016-08-01
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
代码最后加上getc har();
加上了,还是同样的情况:
//申请存放时间字符串的内存空间
	m_date = (char *)malloc(sizeof(char) * strlen("2000-01-01") + 1);
	m_time = mktime(&p);
	//格式化本机时间
	strftime(m_date, strlen(m_date), "%Y-%m-%d", &p);
	getchar();
china34420 2016-08-01
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
代码最后加上getc har();
是不是 getchar(); 加上也没有作用
paschen 版主 2016-08-01
  • 打赏
  • 举报
回复
代码最后加上getc har();
china34420 2016-08-01
  • 打赏
  • 举报
回复
strftime(m_date, strlen(m_date), "%Y-%m-%d", &p);
改成
strftime(m_date, sizeof(char) * 11, "%Y-%m-%d", &st);
谢谢各位老师
china34420 2016-08-01
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
仅供参考:
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <sys/timeb.h>

struct tm st;
time_t tt;
char mon[4];
char mn[12][4]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
int i;
char timstr[27];
char tmpbuf[128];
struct _timeb tb;
int tz;
char c;

void main() {
    strcpy(timstr,"08/Dec/2011:15:25:03 +0800");
    sscanf(timstr,"%2d/%3s/%4d:%2d:%2d:%2d",&st.tm_mday,mon,&st.tm_year,&st.tm_hour,&st.tm_min,&st.tm_sec);
    for (i=0;i<12;i++) if (0==stricmp(mn[i],mon)) {st.tm_mon=i; break;}
    st.tm_year-=1900;
    tt=mktime(&st);
    if (-1!=tt) {
        strftime(tmpbuf,128,"%Y-%m-%d %H:%M:%S\n",localtime(&tt));
        printf(tmpbuf);//2011-12-08 15:25:03
    } else {
        printf("[%s] is Invalid time string!\n",timstr);
    }

    _ftime(&tb);
    strftime(tmpbuf,128,"%m/%b/%Y:%H:%M:%S",localtime(&tb.time));
    tz=-tb.timezone;
    c=(tz>0)?'+':'-';
    tz=(tz>0)?tz:-tz;
    sprintf(tmpbuf,"%s %c%02d%02d\n",tmpbuf,c,tz/60,tz%60);
    printf(tmpbuf);//12/Dec/2011:17:36:41 +0800
}
现在的码农竟然99%都不会在cmd窗口中输入cd命令设置当前目录为程序所在目录,输入程序名运行程序了!
谢谢老师

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧