单片机—C语言char数组和字符串赋值、拷贝、附加注意事项

说明:原创都是个人经验,本人才疏学浅,如有不妥之处切盼高手指点纠正!

今天在做单片机的一个小程序,本来以为改一改例子程序很简单,结果耗费了一一整天时间。程序中用了很多strcat函数对字符串进行拷贝,我为了增强程序的通用性,就把原来字符串的地方用char数组代替。结果出现了很多意想不到的问题,输出字符混乱,系统重启等等。经过自己分析才发现strcat函数在作怪。C程序里规定字符串数组以\0作为结束符,也就是说strcat函数的操作只有在收到结束符才停止,如果不停止则胡乱寻址,程序不错才怪呢。

strlen,strcat,strcpy等函数是以\0即0x00为结束符标识。而在实际应用中,总不能每次都在字符串后面跟个\0字符吧,在一些需要转换类型的场合很不实用。

为了摆脱这个限制,可以使用strncpy,strncat 这一类函数来操作,根据len来决定拷贝和附加的长度。以strncpy函数举例

char *strncpy ( char *dst, /* destination string */

char *src, /* source string */

int len); /* max characters to copy */)

原文的表述:The strncpy function copies at most len characters fromsrc todst. Characters are copied until a null character ('\0') is copied or untillen characters have been copied. If the length ofsrc is less thanlen the remaining bytes in dst are padded with null characters ('\0').

注:*pStrInf=strstr(buf,"=");//返回指针是"="的起始地址,即包含"=".

其中这里特别说明一下:strcat和strcpy的区别,都是拷贝函数,Strcat是附加在源字符串的后面,而strcpy函数是从源字符串的0地址开始拷贝!!

为了以后自己不犯错同样错误,记录下来,也希望能帮助到别人。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值