C言語で、ファイルの出力をするプログラムを作ろうとしています。
連番で1000件ぐらいのファイルを出力したいのですが、
sprintf
fopen
fprintf 又は fwrite
fclose
を使って1000回繰り返すプログラムは
どのように書けばいいのでしょうか。
ご教授よろしくお願いします。
for文を使えばできます。
早速のご回答ありがとうございます。
でも書き方がわからないのです。
そこまでわかっているのならば、ご自分で調べられたほうが早いのでは?
# できるならば、あなたがこんなもんかな~と思うコードを提示してください。
出力する内容がわからないので、具体的に回答できないと思いますが。
#include <stdio.h>
int main(void)
{
FILE *fp; /* ファイルポインタ */
/* test.txtというテキストファイルを開く */
fp = fopen( test.txt, r );
if( fp == NULL ) /* 関数が失敗していないか */
{
puts( ファイルのオープンに失敗 );
return 1; /* 異常終了は0以外を返す */
}
puts( ファイルのオープンに成功 );
fclose( fp ); /* 最後に忘れずに閉じる */
return 0;
}
てのを書いたのですが、どう改良したら、sprintfが出てくるのか、
for文をどこで書けばいいのかが不明なのです。
まず、
> 連番で1000件ぐらいのファイルを出力したい
と言ってるにもかかわらず、
> fp = fopen( test.txt, r );
・どこに「連番」があるの? どういうファイル名にしたいの?
・ファイルを出力したいのに、なぜ「r」?
for文、sprintf()以前にこの2点を何とかしましょう。
fopenからfcloseまでの間に書きたいモノを(fprintfなりfwriteなりで)書けばいい。
...あぁ、途中で送信しちゃった。
私が言いたいのは、「複数のファイルを出力できるようになるためには、まずファイル1
つを出力できるようになる必要がある」という事です。
1000本のファイルを作りたいのかな?
それとも1000行からなる(1本の)ファイルを作りたいのかな?
僕は、1000本のファイルを作りたいです。
ならば
for ( i = 0; i < 1000; ++i ) {
char filename[32]; // 32はテキトー
i番目のファイルの名前をfilenameに作る。[*]
FILE* fp = fopen(filename,w);
fpになんか書く
fclose(fp);
}
[*]んとこで sprinfを使います。
> テビさん 2005/10/05(水) 11:23:10
のソースは
http://www.geocities.jp/ky_webid/c/034.html
のコピペです。何も考えてなさそう。
そうです。コピペで元になるのを作ってます。
何も考えれなかったんで。申し訳ないですが、
やはり作れないです。
#include <stdio.h>
int main(void)
{
FILE *fp; /* ファイルポインタ */
int iLoop = 0;
char filename[10];
for ( iLoop = 0; iLoop < 1000; ++iLoop ) {
sprintf(filename, xxx1~1000.txt, iLoop);
FILE* fp = fopen(filename,w);
fclose( fp ); /* 最後に忘れずに閉じる */
return 0;
}
ってなったんですけども、sprintf(filename,xxx1~1000.txt,iLoop);が多分おかしいと
僕は思います。
ファイルの名前は、0001.txt とか 0002.txtとかにして連番で出力したいのです。
ファイル名が「xxx1000.txt」じゃ、11文字あるから、
> char filename[10];
じゃダメですよ。12以上にしないと。