ファイルの出力についての質問 – プログラミング – Home

ファイルの出力についての質問
 
通知
すべてクリア

[解決済] ファイルの出力についての質問

固定ページ 1 / 2

テビ
 テビ
(@テビ)
ゲスト
結合: 19年前
投稿: 17
Topic starter  

C言語で、ファイルの出力をするプログラムを作ろうとしています。

連番で1000件ぐらいのファイルを出力したいのですが、

sprintf

fopen

fprintf 又は fwrite

fclose

を使って1000回繰り返すプログラムは
どのように書けばいいのでしょうか。

ご教授よろしくお願いします。


引用未解決
トピックタグ
REE
 REE
(@REE)
ゲスト
結合: 23年前
投稿: 240
 

for文を使えばできます。


返信引用
テビ
 テビ
(@テビ)
ゲスト
結合: 19年前
投稿: 17
Topic starter  

早速のご回答ありがとうございます。

でも書き方がわからないのです。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

そこまでわかっているのならば、ご自分で調べられたほうが早いのでは?
# できるならば、あなたがこんなもんかな~と思うコードを提示してください。

出力する内容がわからないので、具体的に回答できないと思いますが。


返信引用
テビ
 テビ
(@テビ)
ゲスト
結合: 19年前
投稿: 17
Topic starter  

#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文をどこで書けばいいのかが不明なのです。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 22年前
投稿: 468
 

まず、
> 連番で1000件ぐらいのファイルを出力したい

と言ってるにもかかわらず、
> fp = fopen( test.txt, r );

・どこに「連番」があるの? どういうファイル名にしたいの?
・ファイルを出力したいのに、なぜ「r」?

for文、sprintf()以前にこの2点を何とかしましょう。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

fopenからfcloseまでの間に書きたいモノを(fprintfなりfwriteなりで)書けばいい。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 22年前
投稿: 468
 

...あぁ、途中で送信しちゃった。

私が言いたいのは、「複数のファイルを出力できるようになるためには、まずファイル1
つを出力できるようになる必要がある」という事です。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

1000本のファイルを作りたいのかな?
それとも1000行からなる(1本の)ファイルを作りたいのかな?


返信引用
テビ
 テビ
(@テビ)
ゲスト
結合: 19年前
投稿: 17
Topic starter  

僕は、1000本のファイルを作りたいです。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 21年前
投稿: 600
 

ならば

for ( i = 0; i < 1000; ++i ) {
char filename[32]; // 32はテキトー
i番目のファイルの名前をfilenameに作る。[*]
FILE* fp = fopen(filename,w);
fpになんか書く
fclose(fp);
}

[*]んとこで sprinfを使います。


返信引用
dark
 dark
(@dark)
ゲスト
結合: 20年前
投稿: 12
 

> テビさん 2005/10/05(水) 11:23:10
のソースは
http://www.geocities.jp/ky_webid/c/034.html
のコピペです。何も考えてなさそう。


返信引用
テビ
 テビ
(@テビ)
ゲスト
結合: 19年前
投稿: 17
Topic starter  

そうです。コピペで元になるのを作ってます。
何も考えれなかったんで。申し訳ないですが、
やはり作れないです。


返信引用
テビ
 テビ
(@テビ)
ゲスト
結合: 19年前
投稿: 17
Topic starter  

#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とかにして連番で出力したいのです。


返信引用
tib
 tib
(@tib)
ゲスト
結合: 22年前
投稿: 468
 

ファイル名が「xxx1000.txt」じゃ、11文字あるから、

> char filename[10];

じゃダメですよ。12以上にしないと。


返信引用
固定ページ 1 / 2

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました