C言語による「テキストファイルの読み書き(fprintf)」について
C言語による「テキストファイルの読み書き(fprintf)」について質問です
ずぶの初心者ですが、既知のファイルの1行目に指定した文字列を付加させるプログラムを作りたいと思っています。
以下のように作りました。
------------------------------------------------------------
#include <stdio.h>
int main(void)
{
FILE *fp;
fp = fopen("test.csv","r+");
fprintf(fp,"コントロールカラム1,コントロールカラム2,・・・(略)・・・,コントロールカラム56\n");
fclose(fp);
return 0;
}
------------------------------------------------------------
このとき「test.csv」の内容が以下のようであったとします。(容量は1MBくらいです。)
001,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj
002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj
~(略)
5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj
この状態でプログラムをコンパイルして実行すると、「test.csv」の内容が以下のようになってしまいます。(一行目が消える)
AAA,BBB,CCC,DDD,EEE
002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj
~(略)
5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj
またcsvの行が増える度に妙な挙動になっていきます・・・(一行あいたり、先頭行が5行ほど消えたり)
希望する動作としては
コントロールカラム1,コントロールカラム2,・・・(略)・・・,コントロールカラム56
001,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj
002,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj
~(略)
5000,aaa,bbb,ccc,ddd,eee,fff,ggg,hhh,iii,jjj
のようになるようにしたいのですがどのようにすればよいのでしょうか。
よろしくお願いします。
(使用ソフト:Borland C++ Compiler, Cpad)
参考にしたサイトの項目:http://homepage3.nifty.com/mmgames/c_guide/17-01.html
お礼
解答ありがとうございます。 言葉足らずで申し訳ありません。 あらためて説明させていただきます。 >「3列目」の値が「70」の行だけ取り出すといったものです。 このデータは、ファイルにあります。 このファイルを読んで、必要なデータのみ取り出したファイルを 別に作りたいということです。 私の理想ではプログラムは対話式で プログラムを実行すると、 read file name? -->aaa.dat /*元のファイルの名前*/ make file name -->zzz.dat /*新しく作るファイルの名前*/ line -->3 /*何列目のどのような値の */ value -->70 /*のどのような値の行を取り出したいか*/ 上記のように表示され 新しく作ったファイル「zzz.dat」に 2 bbb 70 4 ddd 70 というデータがはいるようなものがいいのですが。 >ホームページなんかも教えて貰えると大変ありがたいです。 これは、これに近いプログラムの作成手順なんかがのっている ホームページがあれば、教えて欲しいという意味です。