ページ 11

ファイル書き込みで・・

Posted: 2010年4月22日(木) 19:05
by ひよこ
ファイルを取得し書きこもうと思って次の文を実行させているのですが、
書きこめません(ファイルが出てこないです。)
どうしたらよいのでしょうか?
head_fileはNULLではありません。
例えば
head_file = 0x016422b8 {fileName=0x016422b8 "D:\マイドキュメント\mp3\test.mp3" next=0x00000000 }
こんな感じです。
環境VC2005EE 言語Cです。よろしくお願いします。
//ファイルに書き出す    
    if(head_file!=NULL){
        FILE *fp;
        fp=fopen("data.mdt","w");    

        if(fp==NULL)
            return false;
                
        file_t *p=head_file;    
        while(p!=NULL){
            fprintf(fp,"%s\n",p->fileName);
            p=p->next;
        }
        fclose(fp);
    }

Re:ファイル書き込みで・・

Posted: 2010年4月22日(木) 19:06
by ひよこ
fpはNULLでなくて
fp = 0x66ce1d68 {_ptr=0x00000000 <不適切な Ptr> _cnt=0 _base=0x00000000 <不適切な Ptr> ...}
となっております。

Re:ファイル書き込みで・・

Posted: 2010年4月23日(金) 16:10
by ookami
時間が経っているのでもう解決しているかもしれませんが...どこか別のフォルダに出力されているなんて単純なことではないですよね...?HDD全体で、data.mdtでファイル検索してみるとか。

Re:ファイル書き込みで・・

Posted: 2010年4月23日(金) 17:23
by ひよこ
ookamiさんありがとうございます。
別のフォルダにありました。すみませんでした。
GetOpenFileNameで開いた場所に保存されてました。
GetOpenFileNameを使うと、プロジェクトのファイルのディレクトリが変更されてしまうのでしょうか?
変更しない方法があったら教えて欲しいです。

Re:ファイル書き込みで・・

Posted: 2010年4月23日(金) 22:34
by ookami
GetOpenFileName...確か変更された気がします。あいまいですが。

あらかじめ、
GetCurrentDirectory(_MAX_PATH, dir);
http://www11.plala.or.jp/studyhall/cpp/cpp.html

でカレントディレクトリを取得して、

SetCurrentDirectory(
LPCTSTR lpPathName // 新しいカレントディレクトリ
);
http://msdn.microsoft.com/ja-jp/library/cc429764.aspx

で戻すって感じでしょうか。あまりスマートでない気もしますが...^^;

Re:ファイル書き込みで・・

Posted: 2010年4月23日(金) 22:54
by Justy
>GetOpenFileNameを使うと、プロジェクトのファイルのディレクトリが変更されてしまうのでしょうか
 OPENFILENAME構造体のメンバ Flagsに OFN_NOCHANGEDIRを追加すれば変更されません。

OPENFILENAME構造体
http://hp.vector.co.jp/authors/VA023539 ... og/004.htm

Re:ファイル書き込みで・・

Posted: 2010年4月23日(金) 23:10
by ookami
勉強になりました^^;;;; Justyさん、ありがとうございます。ひよこさん、51134 はスルーしてください。

Re:ファイル書き込みで・・

Posted: 2010年4月24日(土) 06:20
by ひよこ
できました。
Justyさんookamiさんありがとうございました。