fprintf()で作ったファイルを、新しく作ったフォルダに入れるには?

解決


鈴木  2005-10-14 07:26:29  No: 59250

Visual C++で数値計算をやっています。その中で、fprintf()で新しくファイル作り、そのファイルに出力は出来るのですが、そのようなファイルをフォルダに入れたいのです。そのようなことが出来るのでしょうか??


鈴木  2005-10-14 07:46:36  No: 59251

具体例を挙げてみたいと思います。
#include<stdio.h>
#include<math.h>

int main(void)
{  
    double x,y,z;
    int i,j;

    FILE *fp1,*fp2,*fp3,*fp4;

    fp = fopen("1.data","w");
    fp1 = fopen("2.data","w");
    fp2 = fopen("3.data","w");
    fp3 = fopen("4.data","w");

    for(j=1;j<5;j++){
       for(i=1;i<10;i++){
   if(j==1) fprintf(fp1,"%le %le %le %le\n",x,y,z);
          if(j==2) fprintf(fp2,"%le %le %le %le\n",x,y,z);
   if(j==3) fprintf(fp3,"%le %le %le %le\n",x,y,z);
          if(j==4) fprintf(fp4,"%le %le %le %le\n",x,y,z);
      }
    }
 
   fclose(fp1);
   fclose(fp2);
   fclose(fp3);
   fclose(fp4);
}

この例だと、フォルダは作られていません。フォルダを生成するような関数はあるのですか?
また上のプログラムでは、ファイルは4つできると思いますが仮にフォルダが4つ作ることが出来たとしたら、それぞれにファイルを一つづつ入れることができますでしょうか?
いろいろ調べたのですが、ファイルの出力ばかりでフォルダの出力が探せませんでした。知っている方がいたら教えてもらえませんでしょうか?


Blue  2005-10-14 07:58:53  No: 59252

> この例だと、フォルダは作られていません。フォルダを生成するような関数はあるのですか?
_mkdir関数を調べてみてください。
(WinAPIのCreateDirectory関数でも出来ます。)

それと、任意のディレクトリにファイルを作りたい場合は、
>    fp = fopen("1.data","w");
といったように、ファイル名だけではなくフルパスで指定しましょう。
# ファイル名だけだと、カレントディレクトリに作ります。


まきじ  2005-10-14 10:04:43  No: 59253

>fprintf(fp1,"%le %le %le %le\n",x,y,z);

x y z は double 型なのでプリフィックス l は不要。

ファイル名 [num].data という形式なので以下の様にすると
スッキリするのでは?

for(i = 1; i <= 4; i++){
  sprintf(filename,"%d.data",i);
  fp = fopen(filename,"w");
      for(j = 0; j < 10; j++) fprintf(fp,"%e %e %e\n",x,y,z);
}


鈴木  2005-10-15 07:48:41  No: 59254

CreateDirectory関数でフォルダを作ることが出来ました。
また、任意のディレクトリにもファイルを入ることができ助かりました。
親切にありがとうございました。


青木  2005-10-21 09:58:02  No: 59255

Blueさんから
>    fp = fopen("1.data","w");
のようにファイル名だけではなくてフルパスで
指定してくださいとありますが、フルパスで指定することが出来ません(下のようなプログラム)。

>    fp = fopen("C:\programm\a\1.data","w");

どこか間違っていますでしょうか??


Blue  2005-10-21 10:05:00  No: 59256

> どこか間違っていますでしょうか??
間違っています。

エスケープシーケンス
http://www.microsoft.com/japan/developer/library/vccore/_langref_escape_sequences.htm


Blue  2005-10-21 10:08:08  No: 59257

いちおう解説付きの初心者向けのサイトもリンクはっときます。
http://www9.plala.or.jp/sgwr-t/c/sec05.html


青木  2005-10-21 10:56:24  No: 59258

うれしいです!  できました↓
>    fp = fopen("C:\programm\a\1.data","w");
ではなく、
>    fp = fopen("C:\¥programm\¥a\¥1.data","w");
ですね!!!
Blueさん、本当にありがとうございました。
Blueさん最高です☆


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加