gpt4 book ai didi

c - 在递归函数中使用 fprintf 时遇到问题

转载 作者:行者123 更新时间:2023-11-30 15:43:19 24 4
gpt4 key购买 nike

我正在使用一个递归函数,它给定一个目录,扫描它并打印出所有文件和子目录。它还将文件列表打印到 txt 文件。

我的标准输出是:

    [test]
[empty]
[notreally]
[real empty]
- haha.txt
- readme.txt
- test2.c
- test.c

文件夹位于[]中。这是我期望的标准输出,但是当我检查 log.txt 时,它不一样:

          [real empty]
[notreally]
- haha.txt
[empty]
- readme.txt
[test]
- test2.c
- test.c

如果我更改文件 *log = fopen(logFilePath,"a+"); FILE *log = fopen(logFilePath,"w");那么 log.txt 的输出将是:

[test]
- test2.c
- test.c
.txt

最佳答案

你忘记了括号。这:

else
printf("%*s- %s\n", level*2, "", entry->d_name);
fprintf(log,"%*s- %s\n", level*2, "", entry->d_name);

应该是

else {
printf("%*s- %s\n", level*2, "", entry->d_name);
fprintf(log,"%*s- %s\n", level*2, "", entry->d_name);
}

此外,不要每次看到文件时都打开和关闭该文件。打开一次用于写入 ("w") 并将其传递给函数。不要在函数中打开文件进行追加,而是将 fopen 从函数中取出。

关于c - 在递归函数中使用 fprintf 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882322/

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