C语言:字符串数组含有动态字符串成员如何处理?
这面这种情况如何处理?
float t = 2;
char TLP[] = "";
sprintf(TLP,"%d",(uint8_t)t * 10);
char * GMS[] = {"aaa","bbb","","ccc"};
GMS[2] = &TLP[0];
char zzz[] = "zzz";
for(int i=0;i<4;i++)
{
char RUN[] = "";
strcat(RUN, (const char *)zzz);
strcat(RUN, (const char *)GMS[i]);
strcat(RUN, "\n");
printf((const char *)RUN);
}
期待结果是依次输出了符串,
zzzaaa
zzzbbb
zzz20(这行不能正确显示,其它行都正确)
zzzccc
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
c语言字符串后面都自动跟一个"\0"作为字符串截止符。而GMS[2]指向的内存块中,是TLP,也即sprintf过去的内容,存入的是格式化成字符串的整数20。我记得sprintf不会自动加"\0"的,你需要手动加上。