strcat使用要注意什么,我用的是keil,下载到单片机里面出了一个问题,如下:

A1B2D4E5 2013-09-21 01:28:25
u8 idata demo[100]="$GPRMC,023543.00,A,1148.2234,N,11322.09875,E";
u8*date;
date=(u8*)malloc(sizeof(u8));
*date=1; 给date的内容赋值
write_data('5'); //lcd显示5
write_data('5'); //lcd显示5
strcat(demo,date); //连接
write_data('5');
这只是程序的一部分,不过问题就出在strcat上面,下载到单片机后,lcd只会显示两个5,也就是第三个5没有显示出来,程序在strcat这步卡死了,跪求大神解答!!!
...全文
519 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbing7 2013-09-23
  • 打赏
  • 举报
回复
问题出在 strcat(demo,date); //连接 这个函数的使用,这个函数连接的时候要到到'\0'而你的date只有一个字节的字符,虽然把这个字符贴过去了,但是没有'\0'丫会一直找,所以造成越界溢出了 把date弄成2个字节的空间,把"1"送进去,就好了
  • 打赏
  • 举报
回复
of123 2013-09-22
  • 打赏
  • 举报
回复
哦,看错了,是你声明的变量。
of123 2013-09-22
  • 打赏
  • 举报
回复
strcat(demo,date); //连接 你确认是 date 而不是 data ?
dceacho 2013-09-21
  • 打赏
  • 举报
回复

u8 idata demo[100]="$GPRMC,023543.00,A,1148.2234,N,11322.09875,E";
 u8 date[2];
// date=(u8*)malloc(sizeof(u8));
 date[0]='1';                                    给date的内容赋值
 date[1]=0;//或者date[1]='\0'; '\0'=0
write_data('5');                         //lcd显示5
  write_data('5');                //lcd显示5
   strcat(demo,date);           //连接
 write_data('5');
dceacho 2013-09-21
  • 打赏
  • 举报
回复
*data=1; 这个有问题,strcat是追加字符串的,结尾必须有结束符0

27,520

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧