我正在使用一个给定目录的递归函数,扫描它并打印出所有文件和子目录。它还将文件列表打印到txt文件。
我的标准是:
[test]
[empty]
[notreally]
[real empty]
- haha.txt
- readme.txt
- test2.c
- test.c
文件夹在[]中。这就是我期望的stdout,但是当我检查我的log.txt时它是不一样的:
[real empty]
[notreally]
- haha.txt
[empty]
- readme.txt
[test]
- test2.c
- test.c
如果我改变了FILE * log = fopen(logFilePath,“a +”); to FILE * log = fopen(logFilePath,“w”);然后输出到log.txt将是:
[test]
- test2.c
- test.c
.txt
答案 0 :(得分:1)
你忘了那些parens。这样:
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
。