1

ディレクトリ内のすべてをグロブして結果のリストを印刷しようとしていますが、空のprintfが表示されます。

#include <glob.h>
#include <stdio.h>

int main()
{
  int result;
  glob_t buffer;
  buffer.gl_offs = 10;
  glob("*", GLOB_DOOFFS, NULL, &buffer);
  printf((char*)buffer.gl_pathv);
}

何が機能しますか

printf("%i", buffer.gl_pathc));
4

1 に答える 1

3

globで空のスロットを予約する必要がありますか?GLOB_DOOFFS必要ない場合は含めないでください。そして、globのためにメモリを解放することを忘れないでください。

次のようなものを試してください。

#include <glob.h>
#include <stdio.h>

int main() {

    glob_t globbuf;
    int err = glob("*", 0, NULL, &globbuf);
    if(err == 0)
    {
        for (size_t i = 0; i < globbuf.gl_pathc; i++)
        {
            printf("%s\n", globbuf.gl_pathv[i]);
        }

        globfree(&globbuf);
    }

    return 0;
}
于 2013-02-26T10:06:20.880 に答える