あなたと過ごした5年弱。私はあなた(C言語)のおかげで生きていけた。
確かにその時間はあったはずなのに・・・。
今はもう、どんな風にあなたを呼んでいたのかすら思い出せない。
C言語かC++でフォルダごとのファイル数えよう、と思って手が止まった。
あれってどうすんだっけ?wwww 一応、それで飯食ってたんだがなぁ。
はてさて、開発環境からしてないぞ(;´Д`)
なんか Visual Studio でもなんも弄ってないブランクの状態でコンパイルされない(;´Д`)
windows SDK入れろってことらしい?
Windows SDK アーカイブ - Windows アプリ開発
ソリューションの再ターゲットとやらでハローワールド成功。良かったー。
C言語でフォルダ内のファイル数とファイル名を取得 - Qiita
のコメント欄を見る
FindFirstFile 関数
を使うらしい。
次のサンプルコードは、FindFirstFile の最も簡単な使い方を示します。
https://msdn.microsoft.com/ja-jp/library/cc429233.aspx
#define _WIN32_WINNT 0x0400 #include "windows.h" int main(int argc, char *argv[]) { WIN32_FIND_DATA FindFileData; HANDLE hFind; printf ("Target file is %s.\n", argv[1]); hFind = FindFirstFile(argv[1], &FindFileData); if (hFind == INVALID_HANDLE_VALUE) { printf ("Invalid File Handle. Get Last Error reports %d\n", GetLastError ()); } else { printf ("The first file found is %s\n", FindFileData.cFileName); FindClose(hFind); } return (0); }
うむ、動かぬ。でたなワイド文字列(?)。もう忘れたぞ。
プロジェクト->プロパティ->構成プロパティ->全般 の中にある
https://oshiete.goo.ne.jp/qa/2236318.html
文字セットを[Unicode 文字セットを使用する]から[マルチバイト文字セットを使用する]
で回避。
うーむ、思い出せないwww
// Ctest.cpp : コンソール アプリケーションのエントリ ポイントを定義します。 // #include "stdafx.h" extern long Directory(char path[]); int flg; int main(int argc, char *argv[]) { flg = 0; long f = Directory(argv[1]); if (f > 0) { printf("%s %d", argv[1], f); } return (0); } long Directory(char path[]) { char subpath[_MAX_PATH]; char temp[_MAX_PATH]; WIN32_FIND_DATA lp; long f = 0; strcpy(temp, path); HANDLE h = FindFirstFile(temp, &lp); temp[strlen(temp) - 1] = '\0';//*を消している do { if ((lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp(lp.cFileName, "..") != 0 && strcmp(lp.cFileName, ".") != 0) { //subpathでディレクトリのフルパスが分かる wsprintf(subpath, "%s%s\\*", temp, lp.cFileName); printf("%s", subpath); flg = 1; Directory(subpath); } if ((lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY) { f++; } } while (FindNextFile(h, &lp)); if (flg == 1) { printf(" %d\n", f); flg = 0; } FindClose(h); return f; }
参考にしたのは(というかほぼそのままだけどw)
指定したディレクトリ以下のファイルを列挙
出力
>Ctest c:\test\* c:\test\test2\* 2 c:\test\* 3