c - 如何使二维字符数组完全为空?
问题描述
我正在使用 malloc 创建一个 2D 数组,当我遍历该数组时,那里有我不想要的字符和符号。数组不应该是完全空的吗?
我试图将空字符分配给每一行的开头,但这并没有改变任何东西。
char **structure;
structure = malloc(sizeof *structure * 2);
if (structure) {
for (size_t i = 0; i < 2; i++) {
structure[i] = malloc(sizeof *structure[i] * 20);
structure[i][0] = '\0';
}
}
for (int i = 0; i <= 2; i++) {
for (int j = 0; j < 20; j++) {
printf("%c ", structure[i][j]);
}
printf("\n");
}
我希望输出只是空格,但这就是出现的:
Z Ñ P Ñ l L O
Z Ñ P Ñ N U M B
解决方案
您应该使用该calloc
功能;这是我经常使用的。它做同样的工作,malloc()
但它用 初始化所有分配的位0
。
推荐阅读
- c# - 尝试使用 .Net Core Framework 3.0 让 .Net Boxed Framework 工作
- c# - Xamarin Android:为什么对 Azure Active Directory 的身份验证不起作用
- python - 是否可以将 QInputDialog 与嵌套列表或类似的东西一起使用?
- python - 将 AWS Secrets Manager 与 Python 结合使用(Lambda 控制台)
- sql-server - 使用 Azure DevOps 部署数据库期间出现错误“DELETE 语句与 REFERENCE 约束冲突”
- java - 从另一个方法中更新 JFrame
- c - 从动态分配的文件中计算最重复出现的元音
- datetime - PySpark to_date() 方法是否只是将日期时间截断为日期?
- vb.net - 按列或单元格添加到 DataGridView
- sql - 选择前两个不同的匹配项并返回 rowid