Visual C++で数値計算をやっています。その中で、fprintf()で新しくファイル作り、そのファイルに出力は出来るのですが、そのようなファイルをフォルダに入れたいのです。そのようなことが出来るのでしょうか??
具体例を挙げてみたいと思います。
#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つ作ることが出来たとしたら、それぞれにファイルを一つづつ入れることができますでしょうか?
いろいろ調べたのですが、ファイルの出力ばかりでフォルダの出力が探せませんでした。知っている方がいたら教えてもらえませんでしょうか?
> この例だと、フォルダは作られていません。フォルダを生成するような関数はあるのですか?
_mkdir関数を調べてみてください。
(WinAPIのCreateDirectory関数でも出来ます。)
それと、任意のディレクトリにファイルを作りたい場合は、
> fp = fopen("1.data","w");
といったように、ファイル名だけではなくフルパスで指定しましょう。
# ファイル名だけだと、カレントディレクトリに作ります。
>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);
}
CreateDirectory関数でフォルダを作ることが出来ました。
また、任意のディレクトリにもファイルを入ることができ助かりました。
親切にありがとうございました。
Blueさんから
> fp = fopen("1.data","w");
のようにファイル名だけではなくてフルパスで
指定してくださいとありますが、フルパスで指定することが出来ません(下のようなプログラム)。
> fp = fopen("C:\programm\a\1.data","w");
どこか間違っていますでしょうか??
> どこか間違っていますでしょうか??
間違っています。
エスケープシーケンス
http://www.microsoft.com/japan/developer/library/vccore/_langref_escape_sequences.htm
いちおう解説付きの初心者向けのサイトもリンクはっときます。
http://www9.plala.or.jp/sgwr-t/c/sec05.html
うれしいです! できました↓
> fp = fopen("C:\programm\a\1.data","w");
ではなく、
> fp = fopen("C:\¥programm\¥a\¥1.data","w");
ですね!!!
Blueさん、本当にありがとうございました。
Blueさん最高です☆
ツイート | ![]() |