c - 尽管实际上输入了我想要的整数大小,但字符字符串长度没有正确初始化?
问题描述
我正在使用 C 中的 char 数组。我在上一步中设置了大小。当我打印出来时,它清楚地显示 num_digits 为 1。但是当我将它放入设置 char 数组的大小以使其成为大小为 num_digits 的 char 数组时,它将数组的大小设置为 6。在下一步当我打印 strlen(number_array) 时,它会打印 6。打印出来我得到带有很多问号的东西。有谁知道为什么会这样?
int num_digits = get_num_digits(number);
printf("Num digits are %d\n", num_digits);
char number_array[num_digits];
printf("String len of array: %d\n", strlen(number_array));
解决方案
您需要空终止您的数组。
char number_array[num_digits + 1];
number_array[num_digits] = '\0';
如果没有这个空终止符,C 就无法知道您何时到达数组的末尾。
推荐阅读
- python - PyOpenGL 3.1.0 with Pygame
- javascript - 如何将按钮文本更改为数组中的数字
- unity3d - Unity 2D 摄像机在角色移动时放大,但摄像机的属性不会改变
- powershell - Windows:通过 Powershell 脚本(远程)删除特定的 Active Directory 帐户
- javascript - Power BI Rest API - JS - 以编程方式设置视觉级别过滤器错误
- c++ - 为什么 MonitoringManager::OnRequestSucceeded() 中的 assert(s_monitors) 会失败?
- gradle - IntelliJ Kotlin multiplatform project Gradle sync very long
- javascript - Javascript - 悬停时播放视频的问题
- android - 使用 Readium 2 for android 的 Webview 错误
- reactjs - 我应该使用 ASP.NET Core 2.2 MVC React.js 和 Redux 模板吗?