0

ディレクトリを指定してスキャンし、すべてのファイルと子ディレクトリを出力する再帰関数を使用しています。また、ファイル リストを 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
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 に答える