c - 将字符串存储在变量中
问题描述
有人会解释如何将字符串(或字符数组)存储在长度较小的 char 数组中吗?例如,以下面的例子为例。
int main()
{
char ls_thread[10];
sprintf(ls_thread,"Learning C is %s\n","fun");
printf("%s",ls_thread);
printf("Length of the string is %d",strlen(ls_thread));
return 0;
}
还有可能出现的潜在问题是什么?
解决方案
这是未定义的行为。
仅仅因为您的编译器从源代码中生成了二进制文件,并不意味着该代码是合法的。访问超出分配的内存是未定义的行为。
在您的代码中,ls_thread
有 10 个成员,这表明只保留一个 9 - char
string和一个 null 终止符。尝试访问第 10 个元素是对无效内存的冒险,这会导致 UB。
推荐阅读
- json - 将嵌套的 JSON 字典列表写入 CSV
- mysql - 如何解决“errno 121 Duplicate key on write or update”?
- mongodb - 如何安装 Mongo Hadoop 连接器
- html - 如何在没有垂直对齐的情况下对齐多个 div 标签?
- rest - 如何使用顶点在谷歌驱动器的谷歌文档中添加正文(内容)
- javascript - JQuery在同一元素(#id)上的多次点击监听器如何阻止其他人执行
- javascript - 无法附加 BR 标签
- docker - 可以将 Apache 虚拟主机设置为重定向到 Docker 容器吗?
- python - 音乐未播放(discord.py)
- python - 将按钮组件添加到消息(discord.py)