c中sprintf函数

c中sprintf函数printf(edate,"%s%s",decideday(trans(substr(date,0,3)),2000+atoi(substr(dat... c中sprintf函数
printf(edate, "%s%s", decideday(trans(substr(date, 0, 3)), 2000+atoi
(substr(date, 3, 5))), date);
date是一个char数组,例如输入的是:JAN09。
substr函数是截取字符串的,例如substr(date, 0, 3)就会截取出JAN这三个字符。
trans这个函数是将英文缩写的月份转换为字符型,例如传入JAN,会返回“1”。
sprintf语句中decideday函数有两个参数,第一个是接收月份,即“1”,第二个是接受年份,例如:“2009”。
应得到的结果例如:01JAN09
但现在这个sprintf运行后是错误的,如果改为:
char tmpday[6];
strcpy(tmpday, decideday(trans(substr(date, 0, 3)), 2000+atoi(substr
(date, 3, 5))));
sprintf(edate, "%s%s", tmpday, date);
难道sprintf中参数不能太复杂,对参数的长度有没有要求?嵌套层次不能太多?请指教!谢谢!

错误就是没有得到01JAN09的结果
展开
 我来答
L_o_o_n_i_e
2009-11-05 · TA获得超过4.2万个赞
知道大有可为答主
回答量:8507
采纳率:38%
帮助的人:5249万
展开全部
sprintf 与 printf 类似,只不过输出到 字符串变量。
如果 printf("%s%s", tmpday, date); 输出正确
sprintf(edate, "%s%s", tmpday, date); 就应该正确。

edate 的长度要设得大一点。"01JAN09" 至少要8
313倾国倾城
2015-09-24 · TA获得超过68.9万个赞
知道顶级答主
回答量:5万
采纳率:75%
帮助的人:5831万
展开全部
sprintf 是个变参函数。
【功能】:把格式化的数据写入某个字符串缓冲区。
【头文件】:stdio.h
【原型】:int sprintf( char *buffer, const char *format, [ argument] … );
【参数列表】:
buffer:char型指针,指向将要写入的字符串的缓冲区。
format:格式化字符串。
[argument]...:可选参数,可以是任何类型的数据。
【返回值】:字符串长度(strlen)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式