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

时间:2013-11-09 19:52:37

标签: c

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

1 个答案:

答案 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