在CSDN看到这样一个帖子:
想给一个字符串前面添加一些信息,先贴源码:
#include
#include
#include
int main(int argc, char* argv[])
{
char buf[100];
memset(buf, 0, sizeof(buf));
//先给定初始值
sprintf(buf, "%s", "test");
//拼构字符
sprintf(buf, "www.%s", buf);
printf(buf);
printf("\n");
return 0;
}
大家猜下结果是什么?
实际输出结果为:
原因是什么,大家想想。
==================================
这个初看时是一头雾水 仔细推敲就发现问题了
我是这样理解的
sprintf(buf, "www.%s", buf);
一个一个的复制
首先前面www.先一个个得覆盖掉原来buf里的内容 到了%s时 buf里的内容已经被替换为www.所以%s就是www.所以最后就变成
阅读(2620) | 评论(0) | 转发(0) |