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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
おならちゃん。

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

#1

投稿記事 by おならちゃん。 » 14年前

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したのを違うかをしらべているんですか?
それでなにが・・・

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 14年前

申し訳ないですが、前回の続きの質問でよろしいかと思いますのでこちらは閉じますね。
同じ質問を前回の続きでお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る