arrays - 从数组打印字符串打印错误的结果
问题描述
嘿,我想知道我是否可以得到一些帮助。我有一个像这样给我的数组:
char **indexArray;
我被告知要像这样添加到数组中:
indexArray[recCount++]=root->data;
recCount 并不重要,但本质上,当我这样做时,我尝试了这个:
printf(indexArray[recCount]);
printf(root->data);
然而由于某种原因,输出是这样的:
ðy
test
有谁知道为什么?
编辑:@MikeCAT 我的节点设置如下:
numNodes += 1;
struct bNode *node = (bNode *) malloc(sizeof(bNode));
node->data = data;
node->left = NULL;
node->right = NULL;
printf(node->data); #prints the data I want so this works just fine
return node;
}
然后我按照以下方式做一些事情:
bNode root = makeNode("test")
然后我这样做:
indexArray[recCount++]=root->data;
然而,当我这样做时:
printf("%s", indexArray[0]);
我要么得到一些随机字符,(null),要么只是一个空行。
解决方案
表达式recCount++
加一并计算为加法之前的recCount
值。recCount
因此,您应该在此之后使用indexArray[recCount-1]
而不是indexArray[recCount]
获取分配的值。
还
printf(indexArray[recCount]);
printf(root->data);
看起来很危险,因为它将%
在数据中解释为格式说明符并调用未定义的行为,因为如果包含说明符,则没有对应于说明符的数据。
它应该是
printf("%s", indexArray[recCount]);
printf("%s", root->data);
或者
fputs(indexArray[recCount], stdout);
fputs(root->data, stdout);
推荐阅读
- angular - Angular:自定义管道事件处理
- bash - MacOS catalina Makefile 无法正确处理在 CLI 中工作的 shell 命令
- spacy - 添加正则表达式以停止 spacy 中的单词
- google-chrome - 非隐身模式下的vscode chrome调试器
- angular - Angular8:HttpClient发布到服务器地址
- c++ - 检测和计数接触(遮挡问题)并具有相同颜色的图像
- string - 字符串文字和字符连接输出
- javascript - 如何在 React 本机应用程序上从本机调用 JavaScript 函数
- python-3.x - 在 Pandas 列中查找多行的最大值
- snowflake-cloud-data-platform - 是否可以在不限定数据库名称的情况下运行雪花 sql 脚本。?