• ベストアンサー

ファイル入出力に関して

一度ファイルに保存した、int型データを再び取り出してint型配列に入れ足し算などをしたいのですが、ファイル入出力にはどんな関数を使えばよろしいでしょうか? 教えてください。 出力したデータは、ノートパッドなどで見れなくていいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

> 出力したデータは、ノートパッドなどで見れなくていいです。 ということでしたら、 1)ファイルへの出力時  ・fopen():バイナリーモードでオープン  ・fwrite():ファイルに書込む  ・fclose():ファイルをクローズ 2)ファイルからの入力時  ・fopen():バイナリーモードでオープン  ・fread():ファイルから読込む  ・fclose():ファイルをクローズ  

kerneru
質問者

お礼

なりました!! この、fwrite、freadは知ってたんですがこんなとこで使えるとは・・・・ まだまだ修行不足ですね。 どうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 配列と反復の組み合わせ、ファイルの入出力

    C言語初心者です。 どうしても分からないので投稿しました。 たとえば、 ==読み込むファイル== x 2 3 5 7 9 ・・・ 17 ==== という、xの値が10通りある読み込むファイルがあるとします。 このファイルを読み込み、y=a*xという関数でそれぞれのxに対するyの値を出力したいのです。またこの時、aの値を1~10と変化させたときのyの値も出力したいのです。 出力ファイルのイメージは、 ==出力ファイル== (a_1,x_1)(a_1,x_2)・・・(a_1,x_10) (a_2,x_1)(a_2,x_2)・・・(a_2,x_10) (a_3,x_1)(a_3,x_2)・・・(a_3,x_10)       ・・・       ・・・       ・・・ (a_9,x_1)(a_9,x_2)・・・(a_9,x_10) (a_10,x_1)(a_10,x_2)・・・(a_10,x_10) です。 反復、ファイル入出力、二次元配列を用いて作るのだと思うのですが、うまく作ることができません。 ファイル入出力などなしで、xの値を一つ指定し、aの値を1~10まで変化させたときのyの値を表示させるプログラムを作ったのですが、これもまだうまく動きません。 ご教授してもらえたらとても助かります。 よろしくお願いします。 #include <stdio.h> void main(){ double y,a,x; int i; printf("x=\n"); scanf("%lf",&x); for(a=0;a<10;a++){ a=a++; y=a*x; printf("y=%lf\n",y); } }

  • ファイルの入出力

    初心者です。よろしくお願いします。 私は今、ErgoVista(EarthView)というソフトで画像を表示するために、datファイルを入力して、x00ファイルを出力するプログラムを作っています。datファイルをエディタで表示すると2行45万列の複素データが出てきます。 とりあえず何の処理もせず、ErgoVistaファイル入出力の例から、下のようなプログラムを作ったのですが、実行ができなく 「unknown software exception(0xc00000fd)がアプリケーションの0x00401997で発生しました」と出てきました。 初心者でして、なんで実行ができないのかまったくわかりません。誰か教えてください。 下のソースファイルで間違っているとこがありましたら、教えてもらえると幸いです。 #include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> void Make_Header(char*,int,int); //ヘッダファイル書き出し関数,このまま使用 #define T 451584 main() { /*変数宣言*/ int i; long j; double data1[2][T]; FILE *fp_i, *fp_o; /*入力*/ printf("data in start\n"); fp_i = fopen("200113-HH-100a-IFFT.dat", "r"); for(j = 0; j < T; j++){ for(i = 0; i < 2; i++){ fread(&data1[i][j],sizeof(double),1,fp_i); } } //fread(代入する変数ポインタ,データ型サイズ,データ数,fp_i); fclose(fp_i); //開いたらちゃんと閉じる /*************************************** 処理部分 ***************************************/ /*出力*/ printf("write in start\n"); fp_o = fopen("200113-HH-100a-IFFT1.x00", "wb"); //ファイルオープン,wbはオープン形式でバイナリファイル書き出し fwrite(&data1[i][j],sizeof(double),1,fp_o); //出力部分,ループでまわしたり fclose(fp_o); //開いたらちゃんと閉じる Make_Header("200113-HH-100a-IFFT1.x00",2,T); //ErgoVistaのヘッダファイル情報を出力する関数,?pixel(横数)とline(縦数)を出入? return 0; } /* ヘッダ情報書きこみのサブルーチン このまま使用*/ void Make_Header(char FN[], int pixel, int line) { char hd[40]="", text[40]; FILE *fhd; strncat(hd, FN, strlen(FN)-3); strcat(hd, "hdr"); if((fhd = fopen(hd, "w")) == NULL){ printf("error : cannot open [%s] (header file)\n", FN); exit(1); } fprintf(fhd, "FILE_TYPE = IMAGE \n"); fprintf(fhd, "IMAGE_LINES = %d \n",line); fprintf(fhd, "LINE_SAMPLES = %d \nEND\n",pixel); fclose(fhd); }

  • ファイルの入出力について教えてください。

    初心者です。よろしくお願いします。 私は今、ErgoVista(EarthView)というソフトで画像を表示するために、datファイルを入力して、x00ファイルを出力するプログラムを作っています。datファイルをエディタで表示すると2行45万列の複素データが出てきます。 とりあえず何の処理もせず、ErgoVistaファイル入出力の例から、下のようなプログラムを作ったのですが、実行ができなく 「unknown software exception(0xc00000fd)がアプリケーションの0x00401997で発生しました」と出てきました。 初心者でして、なんで実行ができないのかまったくわかりません。誰か教えてください。 下のソースファイルで間違っているとこがありましたら、教えてもらえると幸いです。 #include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> void Make_Header(char*,int,int); //ヘッダファイル書き出し関数,このまま使用 #define T 451584 main() { /*変数宣言*/ int i; long j; double data1[2][T]; FILE *fp_i, *fp_o; /*入力*/ printf("data in start\n"); fp_i = fopen("200113-HH-100a-IFFT.dat", "r"); for(j = 0; j < T; j++){ for(i = 0; i < 2; i++){ fread(&data1[i][j],sizeof(double),1,fp_i); } } //fread(代入する変数ポインタ,データ型サイズ,データ数,fp_i); fclose(fp_i); //開いたらちゃんと閉じる /*************************************** 処理部分 ***************************************/ /*出力*/ printf("write in start\n"); fp_o = fopen("200113-HH-100a-IFFT1.x00", "wb"); //ファイルオープン,wbはオープン形式でバイナリファイル書き出し fwrite(&data1[i][j],sizeof(double),1,fp_o); //出力部分,ループでまわしたり fclose(fp_o); //開いたらちゃんと閉じる Make_Header("200113-HH-100a-IFFT1.x00",2,T); //ErgoVistaのヘッダファイル情報を出力する関数,?pixel(横数)とline(縦数)を出入? return 0; } /* ヘッダ情報書きこみのサブルーチン このまま使用*/ void Make_Header(char FN[], int pixel, int line) { char hd[40]="", text[40]; FILE *fhd; strncat(hd, FN, strlen(FN)-3); strcat(hd, "hdr"); if((fhd = fopen(hd, "w")) == NULL){ printf("error : cannot open [%s] (header file)\n", FN); exit(1); } fprintf(fhd, "FILE_TYPE = IMAGE \n"); fprintf(fhd, "IMAGE_LINES = %d \n",line); fprintf(fhd, "LINE_SAMPLES = %d \nEND\n",pixel); fclose(fhd); }

  • ファイルの入出力

    初心者です。よろしくお願いします。 私は今、ErgoVista(EarthView)というソフトで画像を表示するために、datファイルを入力して、x00ファイルを出力するプログラムを作っています。datファイルをエディタで表示すると2行45万列の複素データが出てきます。 とりあえず何の処理もせず、ErgoVistaファイル入出力の例から、下のようなプログラムを作ったのですが、実行ができなく 「unknown software exception(0xc00000fd)がアプリケーションの0x00401997で発生しました」と出てきました。 初心者でして、なんで実行ができないのかまったくわかりません。誰か教えてください。 下のソースファイルで間違っているとこがありましたら、教えてもらえると幸いです。(エラーは出ませんでした) #include<stdio.h> #include<math.h> #include<string.h> #include<stdlib.h> void Make_Header(char*,int,int); //ヘッダファイル書き出し関数,このまま使用 #define T 451584 main() { /*変数宣言*/ int i; long j; double data1[2][T]; FILE *fp_i, *fp_o; /*入力*/ printf("data in start\n"); fp_i = fopen("200113-HH-100a-IFFT.dat", "r"); for(j = 0; j < T; j++){ for(i = 0; i < 2; i++){ fread(&data1[i][j],sizeof(double),1,fp_i); } } //fread(代入する変数ポインタ,データ型サイズ,データ数,fp_i); fclose(fp_i); //開いたらちゃんと閉じる /*************************************** 処理部分 ***************************************/ /*出力*/ printf("write in start\n"); fp_o = fopen("200113-HH-100a-IFFT1.x00", "wb"); //ファイルオープン,wbはオープン形式でバイナリファイル書き出し fwrite(&data1[i][j],sizeof(double),1,fp_o); //出力部分,ループでまわしたり fclose(fp_o); //開いたらちゃんと閉じる Make_Header("200113-HH-100a-IFFT1.x00",2,T); //ErgoVistaのヘッダファイル情報を出力する関数,?pixel(横数)と?line(縦数)を出入? return 0; } /* ヘッダ情報書きこみのサブルーチン このまま使用*/ void Make_Header(char FN[], int pixel, int line) { char hd[40]="", text[40]; FILE *fhd; strncat(hd, FN, strlen(FN)-3); strcat(hd, "hdr"); if((fhd = fopen(hd, "w")) == NULL){ printf("error : cannot open [%s] (header file)\n", FN); exit(1); } fprintf(fhd, "FILE_TYPE = IMAGE \n"); fprintf(fhd, "IMAGE_LINES = %d \n",line); fprintf(fhd, "LINE_SAMPLES = %d \nEND\n",pixel); fclose(fhd); }

  • C++ ファイルの入出力

    C++ ファイルの入出力 テキストファイル(ノートパッド)の入出力について勉強しています。プログラムを一通り書いてデバッグした所、何のエラーもありませんでした。しかしテキストファイルを開くことができません。ファイルが存在しないときのために「I/O error」のメッセージを表示するようにしてあるんですけど、プログラムを動かすとそのメッセージが出ます。自分の書いたプログラムが悪いのかと思い、教科書にある例題をコピーして動かしても同じ結果です。プログラム自体は何の問題ないのにテキストファイルがリンクしません。ちなみにファイルの場所は指定していません。なのでcppファイルがあるところと同じところにテキストファイルを置いています。これで動くはずなんですが動きません。どこにテキストファイルを置けばいいのでしょうか?もし必要なら私が書いたコードも載せます。回答よろしくお願いします。

  • C++のstringクラスとファイルの入出力について

    C言語では入出力はfopen,fcloseなど, 文字列の扱いも,char型の配列にfgets…なんとなく使いづらかったので, C++のstringクラスが便利だと聞き,勉強しています。 主にネットで"string 配列 入出力"などで検索しながら探しています。 自分で作成したデータファイル"ex.txt"を読み込み, 用意した配列"data[i]"に代入して,その後色々処理をしたいと思います。 //ex.txt A 2 0 1.0 B 1 2 10.0 C 1 0 100.0 という,"名前 番号1 番号2 数値データ"という4つの情報を"data[i]"に入れ,for文でA~Cまで配列を作りたいです。 後に,名前と番号,数値を切り離して処理したいです。 とりあえず某サイトを見よう見まねで以下のプログラムを書きました。 #include <fstream> #include <string> #include <iostream> using namespace std; int main(){ ifstream ifs( "ex.txt" ); string str; ifs >> str; cout << str << endl; return 0; } Visual C++のコンソールアプリケーションでデバッグなしで実行させると 単に,"A"と一文字しか出力されませんでした。 正直,動作もなにもわからず書いただけです。 C++のstringクラスを用いて,先の"ex.txt"の内容を, ファイルから読み込んで,画面に表示させるプログラムを教えてください。 よろしくお願いします。

  • ファイル入出力をサーブレットで・・・

    JAVAのオーソドックスなファイル入出力のサンプルを改造して、サーブレットにしようと思ったのですがうまくいきませんでした。 まず手始めに、コンソールアプリケーションとして、”abc"と言う内容のabc.txtを吐き出すサンプルを試しました、これはうまくいきました。 その後で、それをそのままサーブレットに組み込み、リクエスト時にファイルの出力ができるか試してみたのですが、どうもどこにも出力されていない用です。 サーブレットへのアクセスが失敗しているのかとおもい、サーブレットのプログラムの最後にhtmlに出力させるコードを書いてみたところ出力されましたので、プログラムそのものにはアクセスしているようです。 やりたいことというのは、htmlのtextareaからpostでおくって、サーバーにtxtファイルとして保存する・・・ということです。

    • ベストアンサー
    • Java
  • ファイルの入出力

    今までに大統領になった人の就任日、代、名前などデータがCSVファイルとしてあります。そのファイルをfgets関数で1行ずつ読み込み、大統領になった回数が多い順に並び替えて新しいcsvファイルに出力したいと考えています。 構造体にそのデータを入れていきたいと思うのですが、その構造体にデータを入れるにはどのようにしたら良いのでしょうか??またどのような構造体を作れば良いのでしょうか??win98でc言語を使用しています。

  • ファイル入出力について

    姓名判断のプログラムを作ろうと思い、次の様な漢字ファイルをメモ帳で作ったのですが、 花,7[リターン] 木,4[リターン] 絵,12[リターン] ・・・ このファイルから花や木や絵の部分をchar型配列に7,4,12などの画数の部分をint型配列に入れたいのですが、どのようにしたらよいのかわかりません。fscanfを使おうとしても1行分文字列として認識されてしまいます。

  • ファイルの入出力が出来ません。

    perlの初心者です。 cgiを作ろうとしています。 標準出力には出力できても、ファイルの入出力が出来ません。 #!/usr/bin/perl open(OUT,">>test"); print OUT "test data"; close (OUT); と実行しても、エラーもでないのですが、ファイルも作られず、書き込みもされません。 しかし、コマンド名'test'としてセーブして、プロンプトから'perl test'とするとファイルに書き込みされるようです。 perlの設定の問題なのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl