C语言基础之sprintf()函数

sprintf()函数原型:

        int sprintf(char *str, const char *format, ...);

                str参数:是指向存储输出结果的缓存区的指针,必须具有足够的容量来存储输出结果;

                format参数:是格式控制字符串,定义了输出的格式等;

                ...参数:代表的是可变参数;

                返回值:输出到缓存区中的字符数量,这个值不包括字符串结尾的'\0'。

例子:

char name[20] = "ysc";

char str[50];

sprintf(str, "My name is %s.", name);

printf("%s\n", str); 

输出为:My name is ysc

一、sprintf使用注意点:

1.sprintf对非空空间进行赋值时,修改地址

1.1错误示范:

    char buff[100]= "ysc";
    sprintf(buff,"%s","sxy");
    printf("%s\n",buff);

返回值如下,但并不是我们所希望的。

 1.2正确示范:

    char buff[100]= "ysc";
    sprintf(buff+sizeof(ysc),"%s","sxy");
    printf("%s\n",buff);

 返回值:

 2.使用sprintf时对第一个参数即缓存区buff对象使用错误

 2.1错误示范:

    char *buff = malloc(100);
    buff ="ysc";
    sprintf(buff,"%s","sxy");
    printf("%s\n",buff);

发生段错误,原因是此时buff虽然拥有足够的空间存储字符串,但由于指向字符串"ysc",导致sprintf是对"ysc"的地址处进行操作。

正确示范:

#if 0    
    char *buff = malloc(100);
    sprintf(buff,"%s","ysc sxy");
    printf("%s\n",buff);
#else
    char *buff = malloc(100);
    memcpy(buff,"ysc",sizeof("ysc"));
    sprintf(buff+sizeof("ysc"),"%s","sxy");
    printf("%s\n",buff);


#endif

如果各位还遇到过其他问题欢迎提出。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跃忧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值