1

* を拡張しようとしているので、いくつかの調査を行ったところ、glob が使用する関数のようです。Linux と同じように ls *.c と入力すると、.c を含むすべてのファイルが返されます。

私は始めなければならないので、最初に glob_t を malloc する必要があることを知っています。

glob_t *globbuf = (glob_t*)malloc(sizeof(glob_t));

この後、これを解決する方法がわかりません...インターネットを介していくつかの例を示しましたが、それがどのように機能するかはよくわかりません。これは私が理解したものです:

if(glob("*.c",GLOB_DOOFFS,NULL,globbuf)) {
   // what am i supposed to write in here?}

globbuf->gl_pathv[0] = "ls";
4

1 に答える 1

3

期待どおりに動作する単純でわかりやすい例を次に示します。

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

int foo(char const * epath, int eerrno) { return 0; }

int main()
{
    glob_t globbuf = {0};

    glob("*.c", GLOB_DOOFFS, foo, &globbuf);

    for (size_t i = 0; i != globbuf.gl_pathc; ++i)
    {
        printf("Found: %s\n", globbuf.gl_pathv[i]);
    }

    globfree(&globbuf);
}
于 2013-10-13T16:27:57.277 に答える