首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >字符串传给数组中出现的错误

字符串传给数组中出现的错误

作者头像
用户11319080
发布2024-10-17 18:55:21
发布2024-10-17 18:55:21
4890
举报
文章被收录于专栏:学习学习
字符串传给数组中出现的错误

  • 如果对你有帮助麻烦给个三连吧 今天在编成程序时候,把字符串赋值给数组后,用%s打印字符串出现了问题。废话不多说直接上代码:
代码语言:javascript
复制
int main()
{
	char arr[5] = "abcde";
	printf("%s\n", arr);
	return 0;
}

输出结果: 我们认为输出结果应该就是abcde,但是实际上是如下图:

先回顾下 %s 打印:它打印字符串只需要提供首字母地址,然后一直打印,直到遇见 \0就会停止打印 我们明明记得这样”abcde“ 后面应该添加 \0,为什么当打印到e的时候,为什么没有停止呢? 我研究了半天才明白abcde字符串实际上有有6个元素,而我们给数组定义的大小只有5个字符大小,所以没有把 \0 放入到数组当中,所以第6个元素不一定是 \0

代码语言:javascript
复制
int main()
{
	char arr[6] = "abcde";
	printf("%s\n", arr);
	return 0;
}

可以发现我们把数组大小调整为6个字符大小,\0被成功传入进数组,打印也恢复了正常。 我们调试一下验证:

我们发现arr2数组中arr2[5]不是 \0总结:在使用数组时候一定要考虑好数组的大小,实在不知道数组的大小可以空着不填,直接把像输入的值放进去,让系统判断大小 例如:

代码语言:javascript
复制
int main()
{
	char arr1[] = "abcde";
	return 0;
}

这样也可以实现。

如果对你有帮助麻烦给个三连吧

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 字符串传给数组中出现的错误
  • 如果对你有帮助麻烦给个三连吧
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档