アプリ版:「スタンプのみでお礼する」機能のリリースについて

findfirst("*",&ffblk,FA_DIREC);//以降findnext
として現在いるディレクトリから子ディレクトリ名を取りこもうとしたのですが
一般のフィルまで取りこんでしまいます
簡単にディレクトリだけを取りこむ方法はあるのでしょうか?

A 回答 (1件)

Windows XP, Borland C++Builder6 ですが、


ff_attrib を見ないとダメなようですね。

#include <stdio.h>
#include <string.h>
#include <dir.h>

int main(void)
{
/*サブディレクトリ一覧*/
struct ffblk ffblk;
int done;
done = findfirst("*.*", &ffblk, FA_DIREC);
while (!done) {
if ((ffblk.ff_attrib & FA_DIREC) == FA_DIREC)
if (strcmp(ffblk.ff_name, ".") != 0) /*カレントディレクトリ*/
if (strcmp(ffblk.ff_name, "..") != 0) /*親ディレクトリ*/
printf("%s\n", ffblk.ff_name);
done = findnext(&ffblk);
}
findclose(&ffblk);
return 0;
}


findfirst は標準関数ではないので
Win32 API で置き換えると次のように。

#include <stdio.h>
#include <string.h>
#include <windows.h>

int main(void)
{
WIN32_FIND_DATA ffd;
HANDLE hf = FindFirstFile("*.*", &ffd);
if (hf == INVALID_HANDLE_VALUE) return 0;
do {
if ((ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
if (strcmp(ffd.cFileName, ".") != 0)
if (strcmp(ffd.cFileName, "..") != 0)
printf("%s\n", ffd.cFileName);
} while ( FindNextFile(hf, &ffd) );
FindClose(hf);
return 0;
}
    • good
    • 0
この回答へのお礼

私も作ったのですがこんな簡単な機能が簡単にできるコマンドがないと不便ですしプログラムも見難くなりますね

提案のものをBorland無償コンパイラによって動かしてみました
動きました
特にwin32のほうは知らなかったので助かります
どうもありがとうございました

お礼日時:2002/12/23 14:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!