ページ 11

サンプルプログラムが読めません。

Posted: 2012年2月09日(木) 11:54
by おならちゃん。
http://www14.big.or.jp/~ken1/tech/tech5.html
ここのサンプルプログラムの理解に苦しんでいます。どうかお力を御貸し下さい。

コード:

strcpy(temp,path);
    HANDLE h=FindFirstFile(temp,&lp);
これはなぜFindFirstFile(path,&lp);としていないのでしょうか?
サイズの大きさをMAX_PATHに統一するためですか?

コード:

 if((lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            && strcmp(lp.cFileName,"..")!=0 && strcmp(lp.cFileName,".")!=0)
なにをしているのでしょうか?lp.dwFileAttributes & FiLE_ATTRIBUTE_DIRECTORY
これはファイルの属性?とlpをANDして何がおこるのでしょうか?
そのつぎの".."をstrcmpするのはわかるような気がします。次の深層かをしらべているんですよね?
しかし"."これも同じときにやってしまうのはなぜなのでしょうか?これは今いる階層の場所ですよね?
どちらか0以外ならどちらかが0にならないとまったく指定したところ意外を探していることになりませんか?

そして、そこのif分が成功したときに、もう一度Directory(subpath);しているのが、よくわかりません。
サブパスの中にフォルダを見つけたときにさらにそのフォルダの中にいくということでしょうか?
wsprintfとは、いったいどのように使うのでしょうか?調べてみたのですが、三つ引数が書いてありました。
http://msdn.microsoft.com/ja-jp/library/cc364872.aspx
しかし、このサンプルプログラムは4つ引数を持たせているきがするのですが、この使い方もできるのでしょうか?
実際この関数はsprintfのようなものらしいのですが、文字列の表示が目的なのでしょうか?それとも、文字列をバッファに格納するのが目的なのでしょうか?バッファで調べてみたところプリンターなどの時間の差を埋めるために一度情報をためておくところがバッファらしいのですが、深層いく前にバッファにハンドルをとっておいて、後から呼び出すということでしょうか?

コード:

 if((lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)!=FILE_ATTRIBUTE_DIRECTORY)
これは、フォルダとファイルの分別?をするのがFILE_ATTRIBUTE_DIRECTORYですよね?
これと、これをANDしたのを違うかをしらべているんですか?
それでなにが・・・

本当に質問だらけですみません。
ご回答よろしくお願いします。

Re: サンプルプログラムが読めません。

Posted: 2012年2月09日(木) 12:12
by softya(ソフト屋)
申し訳ないですが、前回の続きの質問でよろしいかと思いますのでこちらは閉じますね。
同じ質問を前回の続きでお願いします。