0

我正在使用一个递归函数,它给定一个目录,扫描它并打印出所有文件和子目录。它还将文件列表打印到 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

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

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

1 回答 1

1

你忘记了括号。这个:

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取出函数。

于 2013-11-09T19:56:23.130 回答