【工具】snprintf和sprintf(buf,"%.3s",功能一样 在就已经不用memcpy+MIN了

#include <stdio.h>
#include <string.h>
/*
int snprintf(char *str, size_t size, const char *format, ...);
最多从源字符串format中拷贝size字节的内容(含字符串结尾标志'\0')到目标字符串
成功返回源串的长度(strlen, 不含'\0')
失败返回负值
*/
int main(int argc,char **argv)
{
	char buf[16],i;
	memset(buf,'F',16);
	for(i=0;i<16;i++)printf("%c-",buf[i]);printf("\r\n");//F-F-F-F-F-F-F-F-F-F-F-F-F-F-F-F-

	sprintf(buf,"%.3s","123456");/*结尾一起给你*/
	for(i=0;i<16;i++)printf("%d-",buf[i]);printf("\r\n");//49-50-51-0-70-70-70-70-70-70-70-70-70-70-70-70-

	memset(buf,'F',16);	
	sprintf(buf,"%.*s",4,"123456");
	for(i=0;i<16;i++)printf("%d-",buf[i]);printf("\r\n");//49-50-51-52-0-70-70-70-70-70-70-70-70-70-70-70-

	memset(buf,'F',16);	
	sprintf(buf,"%.*s",40,"123456");/*安全的 你要40个 只给你7个*/
	for(i=0;i<16;i++)printf("%d-",buf[i]);printf("\r\n");//49-50-51-52-53-54-0-70-70-70-70-70-70-70-70-70-

	memset(buf,'F',16);	
	snprintf(buf,40,"%s","123456");/*安全的 你要40个 只给你7个*/
	for(i=0;i<16;i++)printf("%d-",buf[i]);printf("\r\n");//49-50-51-52-53-54-0-70-70-70-70-70-70-70-70-70-
	return 0;
}

问题说道点子上

比如你做一个数组softvar[5]={0}

它是V100+最后一个\0  一定要5个内存 否则IAR死机

你需要的是sprintf(buf,"%.4s"...)这样 只要过来4个 最后自动跟一个0

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值