掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
バイナリファイルの入出力 (ID:59013)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
はじめまして。 今回はじめてC++のバイナリファイルを扱いうまくいかないので ご指摘などをお願いします。 void writeFile(){ short data_s=0; int data_i=0; char* data_c="a"; double data_d=0; std::ofstream outputFile("maninfo.dat", std::ios::app | std::ios::binary); // for(int i = 0; i < 100; i++){ cout << "short型の数値を入力してください==> "; cin >> data_s; cout << "int型の数値を入力してください==> "; cin >> data_i; cout << "double型の数値を入力してください==>"; cin >> data_d; cout << "文字列を入力して下さい==>"; cin >> data_c; outputFile.write((char*)&data_s,sizeof(short)); outputFile.write((char*)&data_i,sizeof(int)); outputFile.write((char*)&data_c,sizeof(char)*Max_Name); outputFile.write((char*)&data_d,sizeof(double)); // } outputFile.close(); } void readFile(){ std::ifstream inputFile("maninfo.dat", std::ios::in | std::ios::binary); int count =0; short data_s=0; int data_i=0; char* data_c="a"; double data_d=0; // for(int i = 0; i < 100; i++){ while(!inputFile.eof()){ inputFile.read((char*)&data_s,sizeof(short)); inputFile.read((char*)&data_i,sizeof(int)); inputFile.read((char*)&data_c,sizeof(char)*Max_Name); inputFile.read((char*)&data_d,sizeof(double)); cout << (count + 1) << "件目" << endl; cout << "short : " << data_s << endl; cout << "int : " << data_i << endl; cout << "char* : " << data_c << endl; cout << "double: " << data_d << endl << endl; count++; } inputFile.close(); } void main() { // newfile(); writeFile(); readFile(); } これを実行したところ ・最初のデータを登録すると、同じデータが2件表示される。 ・また2件目のデータを登録すると、2件目のchar*型の部分が 1件目のchar*の部分に上書きされてしまう。 ・char* data_c="a";など初期に何か文字を設定しないと、プログラムが実行時にとまってしまう。 以上の事が起こります。 C++をはじめて1週間と日が浅く、わからないことだらけです。 初心者的質問かもしれませんが、是非ご指導お願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.