sprintf为什么不能正确显示
- C/C++ code
#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后,就不是正确的结果,第二次倒是在错的基础上对了。以前都没注意到这个问题,求解答,谢谢!
[解决办法]
你把f往f里sprintf,当然会出现这样的问题。
之所以会出现第一次、第二次的情况不一样,也是因为执行的顺序不一样。你把第一次改为
- C/C++ code
sprintf(f, "%sa", f);
[解决办法]
查msdn,看使用sprintf()函数的注意事项。
[解决办法]
- C/C++ code
#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;} //不要用数组 用指针
[解决办法]
http://blog.chinaunix.net/space.php?uid=20745340&do=blog&id=1878730
而且你的自我链接可能会有一些问题的