1

_findfirst と _findnext がパターン入力でどのように機能するかを理解する必要があります。

以前はコードに従って機能を分析していましたが、結果に戸惑いました。

    intptr_t handle;
    struct _finddata_t fblock;
    int count = 1;
    char pattern[] = "*";
    printf("Pattern is %s",pattern);
    if((handle = _findfirst(pattern,&fblock))>0){
        printf("\nfound : %d :: ",count++);
        printf("%s",fblock.name);
        while(_findnext(handle,&fblock) == 0){
            printf("\nfound : %d :: ",count++);
            printf("%s",fblock.name);
        }
    }
    printf("\ncompleted");
    //getch();

結果: フォルダーに 4 つのファイルがあります。

1.ReadMe.txt
2.ReadMe1.txt
3.ReadMe1.txt_bck
4.ReadMe1.txtbck

今、

Enter pattern :*.tx
Pattern is *.tx
completed 

Ok。ext tx のファイルはありません

Enter pattern :*.txt_
Pattern is *.txt_
completed

Ok。ext txt_も含むファイルはありません

Enter pattern :*.txt
Pattern is *.txt
found : 1 :: ReadMe.txt
found : 2 :: ReadMe1.txt
found : 3 :: ReadMe1.txtbck
found : 4 :: ReadMe1.txt_bck
completed

??? ext txtのみを要求しました。txt_bck が表示されるのはなぜですか?

Enter pattern :*.txt*
Pattern is *.txt*
found : 1 :: ReadMe.txt
found : 2 :: ReadMe1.txt
found : 3 :: ReadMe1.txtbck
found : 4 :: ReadMe1.txt_bck
completed

これと前の違いは何ですか?

Enter pattern :ReadMe?.txt
Pattern is ReadMe?.txt
found : 1 :: ReadMe.txt
found : 2 :: ReadMe1.txt
completed

期待される "?" ワイルドカードは正確に 1 文字に一致しますが、0 にも一致します。

Enter pattern :ReadMe*.txt
Pattern is ReadMe*.txt
found : 1 :: ReadMe.txt
found : 2 :: ReadMe1.txt
found : 3 :: ReadMe1.txtbck
found : 4 :: ReadMe1.txt_bck
completed

_

4

0 に答える 0