请教函数传值问题!

pooq 2007-07-18 08:48:21
#include <time.h>
#include <stdio.h>

void getCurrentTime(char *str);

int main(){
char myTime[30];
getCurrentTime(myTime);
printf("Current time: %s\n",myTime);
return 0;
}

void getCurrentTime(char *str){
time_t now;
struct tm *timenow;
time(&now);
timenow=localtime(&now);
strftime(str,sizeof(str),"%Y%m%d%H%M%S",timenow);
}
程序如上,能编译通过,但就是实现不了预期的结果,打印出来的信息都是乱码,用数组调用函数就应该这样写啊,实在找不出错误,请达人指教.本人新手上路,希望解答能够详细一些,谢谢!
...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pooq 2007-07-18
  • 打赏
  • 举报
回复
谢谢!
liujiwei2007 2007-07-18
  • 打赏
  • 举报
回复
你说的这两者没有什么必然联系

这里的主要问题出在形参那里


Mypiger 2007-07-18
  • 打赏
  • 举报
回复
void getCurrentTime(char *str);
参数char *str,在有用sizeof(str)是4,
你用strftime的时候就越界了。
pooq 2007-07-18
  • 打赏
  • 举报
回复
改了一下是可以了,有点不明白,就是我传入的myTime不是分配了空间了吗,怎么将这中分配有效的传入函数中,不用在strftime中设定固定的长度?
liujiwei2007 2007-07-18
  • 打赏
  • 举报
回复
strftime(str,sizeof(str),"%Y%m%d%H%M%S",timenow);
改为
strftime(str,128,"%Y%m%d%H%M%S",timenow);
因为 str 是一个指针,它在32位系统下,是四个字节

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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