首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

sprintf首末两个参数相同时出现的有关问题

2013-08-16 
sprintf首末两个参数相同时出现的问题有这样几行代码:#include string.h#include stdio.hint main(){c

sprintf首末两个参数相同时出现的问题
有这样几行代码:


#include <string.h>
#include <stdio.h>

int main()
{
    char buf[1024];
    char a[64] = "/index.html";
    sprintf(a,"/home/code%s",a);

    memset(&buf,0,sizeof(buf));
    sprintf( buf, "aa%s","cc");
    sprintf( buf, "%sbbb", buf);

    printf("%s\n %s",a,buf);
    return 0;
}


输出是:
/home/code/home/code
aaccbbb

为什么第一个输出没有出现预期结果呢? sprintf C
[解决办法]
第一个改成这样


sprintf(a,"%s/home/code",a);


是参数一个一个的压入a的buf里的! 你在前面先把/home/code已经压入 a中了,然后在把a的这个压入后面,所以旧是那个结果了
[解决办法]
memset(&buf,0,sizeof(buf)); buf前面的&是不需要的。
[解决办法]
#include <string.h>
#include <stdio.h>
int main() {
    char buf[1024];
    char a[64] = "/index.html";

    memmove(a+10,a,12);
    strncpy(a,"/home/code",10);

    sprintf( buf, "aa%s","cc");
    sprintf( buf, "%sbbb", buf);

    printf("a==[%s]\nbuf==[%s]\n",a,buf);
    return 0;
}
//a==[/home/code/index.html]
//buf==[aaccbbb]
//

[解决办法]
比方说你先写入"/index.html",
数组a中的值变为"/home/code"
接着压入a中的值到a中/home/code之后即为/home/code/home/code

在这里要考虑数组的即时变化

热点排行