Keil(C语言)里int类型转换成字符串及字符串合并实例

Keil(C语言)里int类型转换成字符串及字符串合并实例

在STM32单片机串口里要实现这样一个输出结果:
日期:xxxx–xx–xx
我以前一直在用如下代码:

	int year=2022,mon=9,day=1;
	/* 发送日期*/		
	if(rmon>9)
		printf("日期:%d--%d",year,mon);
	else 
		printf("日期:%d--0%d",year,mon);		//补零位
		
	if(rday>9)
		printf("--%d\r\n",day);
	else 
		printf("--0%d\r\n",day);		//补零位

输出结果:日期:2022–09–01
上面的例子里,有整形数,有纯字符串,输出是它们的组合。以上应用中是使用了两次printf,每个printf语句完成数据合成,在串口输出中再将两个字符串合并成一个完整的字符串,通过串口的缓存实现了该功能。同时也把int格式的数据顺带变换成了字符串格式。
其实应用中我们往往要先把该结果先保存到一个字符串中,进行一些判断处理再输出,我通过反复实验,最后是这样解决的。代码里忽略部分不必要程序。

	int year=2022,mon=9,day=1;
	char str[120],	str1[40];
	...
	sprintf(str,"日期:%d--%d",year,mon);
	sprintf(str1,"--%d",day);		
	strcat(str,str1);	//使用strcat函数把字符串数组str1[]的内容连接接到str[]后面,并保存在str中。
	
	printf("%s\r\n",str);
	//str[0]='\0';		//需要的时候要清空str[],这里不需要。
		

这里使用了sprintf()函数,它的功能与printf函数的功能基本一样,只是它把结果输出到指定的字符串中了,用起来也很灵活。
第一行把“日期:2022–09”保存在目标字符串str中,第二行把“–01”放在字符串str1中,strcat(str,str1);完成把字符串数组str1[]的内容连接接到str[]后面,并保存在str中。这里注意str不能使用常量字符串,如 char *str或 char str[]不初始化分配存储空间,这样编译虽然可以通过,但运行会造成系统崩溃,我也是在这里困扰了好一阵子。
如果我们要把一个int变量转化成一个字符串变量

sprintf(str,"%d",year);

直接如上面操作就成了,其他形式的变量转成字符串也一样很方便的。

物联沃分享整理
物联沃-IOTWORD物联网 » Keil(C语言)里int类型转换成字符串及字符串合并实例

发表评论