sprintf为什么不能正确显示

lwhptl 2011-11-09 05:04:44

#include <stdlib.h>
#include <stdio.h>

void main()
{
char f[32]="IBM";
printf("%s\n", f);
sprintf(f, "a%s", f);
printf("%s\n", f);
sprintf(f, "%sde", f);
printf("%s\n", f);

return;
}

三次输出分别为: IBM, aaaa和aaaade,这是怎么回事啊?第一次做完sprintf后,就不是正确的结果,第二次倒是在错的基础上对了。以前都没注意到这个问题,求解答,谢谢!
...全文
304 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
無_1024 2011-11-09
  • 打赏
  • 举报
回复
http://blog.chinaunix.net/space.php?uid=20745340&do=blog&id=1878730
而且你的自我链接可能会有一些问题的
無_1024 2011-11-09
  • 打赏
  • 举报
回复

#include <stdlib.h>
#include <stdio.h>

void main()
{
char f[32]="IBM";
char *d = "IBM";
printf("%s\n", f);
sprintf(f, "a%s", d);
printf("%s\n", f);
sprintf(f, "%sde", d);
printf("%s\n", f);

return;
}
//不要用数组 用指针
lengxujun 2011-11-09
  • 打赏
  • 举报
回复
查msdn,看使用sprintf()函数的注意事项。
dongjiawei316 2011-11-09
  • 打赏
  • 举报
回复
你把f往f里sprintf,当然会出现这样的问题。
之所以会出现第一次、第二次的情况不一样,也是因为执行的顺序不一样。你把第一次改为


sprintf(f, "%sa", f);


估计也能对了。

70,020

社区成员

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

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