gpt4 book ai didi

c - 我在输出文件中收到奇怪的符号而不是适当的字母

转载 作者:行者123 更新时间:2023-11-30 16:16:11 26 4
gpt4 key购买 nike

我正在尝试将 BST 的有序遍历打印到输出文件中。然而,有时我会得到奇怪的符号而不是标准输入。

我尝试为 char arr[] 分配额外的空间,但它没有改变任何东西。

编辑:我更改了代码并尝试将其分成两部分。第一种,方法将每个节点按级别顺序分配给节点数组并返回该数组。第二,一个不同的数组,它将返回的值内容写入文件。这次我遇到了 2 个错误。

错误:从类型“bstNode”分配给类型“struct bstNode *”时,类型不兼容错误:从类型“bstNode”分配给类型“struct bstNode *”时,类型不兼容

void traverseTree(bstNode *root){
FILE *file;
file = fopen("newFile", "w");
char *arr;
arr = (char*)malloc(10000 * sizeof(char));
if(root == NULL)
return;

traverseTree(root->left);
fgets(arr, 100, stdin);
fprintf(file, arr);
traverseTree(root->right);

}

下面的新代码

bstNode* traverseTree(bstNode *root, int i){

bstNode *arr[100];
if(root == NULL)
return;

traverseTree(root->left, i);

arr[i] = root;
++i;
traverseTree(root->right, i);

return *arr;
}

void writeToFile(bstNode *root, char *outputFileName){
FILE *file;
file = fopen("newFile", "w");
bstNode *arr = traverseTree(root, 0);
int i = 0;
root = arr[i];
while(root!= NULL){
fprintf(file, root->data);
++i;
root = arr[i];
}

}

最佳答案

除了以下

  • 重复打开同一文件
  • 不检查 fopenmalloc 的返回值
  • 不需要从 malloc 进行转换
  • 不检查 fgets 的返回值

下面一行

fprintf(file, arr);

有一个问题是 arr 中有一个 % 符号(因为这是用于格式化 - 请参阅手册页)

使用以下内容

fprintf(file, "%s", arr);

相反。

编辑

编辑后,另一个问题:

return *arr;

这将返回堆栈上的数据 - 这将超出范围。

fprintf 仍然遇到同样的问题 - 请阅读手册页

关于c - 我在输出文件中收到奇怪的符号而不是适当的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56728772/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com