fwrite不起作用,我的代码出了什么问题?
void printTree (struct recordNode* tree) {
char* report1;
FILE *fp = fopen("test.txt","w");
if (tree == NULL) {
return;
}
//if(fp) {
counter2++;
printTree(tree->right);
fwrite(fp,"%d\n", tree->pop);
//putc(tree->pop, fp);
//report1 = printf("%s = %d\n");
printTree(tree->left);
//}
fclose(fp);
}
Run Code Online (Sandbox Code Playgroud)
pax*_*blo 10
fwrite没有这样的格式化输出,你需要fprintf:
fprintf (fp, "%d\n", tree->pop);
Run Code Online (Sandbox Code Playgroud)
fwrite 有以下原型:
size_t fwrite (const void *restrict buff,
size_t sz,
size_t num,
FILE *restrict hndl);
Run Code Online (Sandbox Code Playgroud)
而且,由于你甚至没有在你的通话中给出最重要的第四个参数(文件句柄),它可以随心所欲.
一个体面的编译器应该警告你这件事.
你这里还有另一个问题.每次调用此函数时,都会重新创建输出文件.这对于递归函数来说并不好,因为每次重复调用都会破坏已经写入的信息.
您可能希望在递归函数之外打开文件,并在其中使用它.
就像是:
static void printTreeRecur (FILE *fp, struct recordNode* tree) {
if (tree == NULL) return;
printTreeRecur (fp, tree->right);
fprintf (fp, "%d\n", tree->pop);
printTreeRecur (fp, tree->left);
}
void printTree (struct recordNode* tree) {
FILE *fp = fopen ("test.txt", "w");
if (fp != NULL) {
printTreeRecur (fp, tree);
fclose(fp);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14875 次 |
| 最近记录: |