第14周-閱讀專案4-二進位制檔案和字串流操作的一般方法
問題及程式碼:
執行結果:
二進位制檔案和字串流操作的一般方法。
#include<iostream>
#include <fstream>
#include<cstdlib>
#include<cstring>
using namespace std;
struct student
{
int num;
char name[20];
float score;
};
int main( )
{
int i;
student stud[5]={1001,"Li",85,1002,"Fun",97.5,1004,"Wang",54,1006,"Tan",76.5,1010,"ling",96};
fstream iofile("stud.dat",ios::in|ios::out|ios::binary);
//用fstream類定義輸入輸出二進位制檔案流物件iofile
if(!iofile)
{
cerr<<"open error!"<<endl;
abort( );
}
//(1)向磁碟檔案輸出5個學生的資料並顯示出來
cout<<"(1)向磁碟檔案輸出5個學生的資料並顯示出來"<<endl;
for(i=0;i<5;i++)
{
iofile.write((char *)&stud[i],sizeof(stud[i]));
cout<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].score<<endl;
}
//(2)將磁碟檔案中的第1,3,5個學生資料讀入程式,並顯示出來;
cout<<"(2)將磁碟檔案中的第1,3,5個學生資料讀入程式,並顯示出來"<<endl;
student stud1[5]; //用來存放從磁碟檔案讀入的資料
for(i=0;i<5;i+=2)
{
iofile.seekg(i*sizeof(stud[i]),ios::beg); //定位於第0,2,4學生資料開頭
iofile.read((char *)&stud1[i/2],sizeof(stud1[0]));
//先後讀入3個學生的資料,存放在stud1[0],stud[1]和stud[2]中
cout<<stud1[i/2].num<<" "<<stud1[i/2].name<<" "<<stud1[i/2].score<<endl;
//輸出stud1[0],stud[1]和stud[2]各成員的值
}
cout<<endl;
//(3) 將第3個學生的資料修改後存回磁碟檔案中的原有位置。
cout<<"(3)將第3個學生的資料修改後存回磁碟檔案中的原有位置"<<endl;
stud[2].num=1012; //修改第3個學生(序號為2)的資料
strcpy(stud[2].name,"Wu");
stud[2].score=60;
iofile.seekp(2*sizeof(stud[0]),ios::beg); //定位於第3個學生資料的開頭
iofile.write((char *)&stud[2],sizeof(stud[2])); //更新第3個學生資料
iofile.seekg(0,ios::beg); //重新定位於檔案開頭
//(4)從磁碟檔案讀入修改後的5個學生的資料並顯示出來。
cout<<"(4)從磁碟檔案讀入修改後的5個學生的資料並顯示出來"<<endl;
for(i=0;i<5;i++)
{
iofile.read((char *)&stud[i],sizeof(stud[i])); //讀入5個學生的資料
cout<<stud[i].num<<" "<<stud[i].name<<" "<<stud[i].score<<endl;
}
iofile.close( );
return 0;
}
執行結果:
二進位制檔案和字串流操作的一般方法。
學習心得:
真是傷不起,這個程式一執行就破壞了我CB中的的中文字元識別。。
然後我重新調好字符集了再試。。CB又崩潰了。。
(⊙o⊙)…所以我決定不冒險了。。
反正我知道這個程式是個什麼意思了。。
相關文章
- 第14周-閱讀專案1-二進位制檔案的讀寫
- 第14周-閱讀專案5-字串流物件字串物件
- 第14周-專案2-二進位制檔案瀏覽器瀏覽器
- 第14周-閱讀專案2-中文字元以二進位制方式儲存字元
- 第14周-專案1-用二進位制檔案處理學生成績
- C#的二進位制檔案操作C#
- 檔案操作(二進位制拷貝)
- 第13周-閱讀專案4-寫出下面程式的輸出結果
- 第13周-閱讀專案3-對文字檔案的訪問
- js對檔案和二進位制操作的一些方法彙總JS
- Python讀寫二進位制檔案Python
- Oracle建立二進位制檔案索引的方法(轉)Oracle索引
- 第2周專案4-圖書館的書
- C++ 讀取二進位制檔案到char*C++
- C/C++ 二進位制讀寫 png 檔案C++
- 二進位制檔案複製
- php寫二進位制檔案PHP
- 二進位制檔案拷貝
- 文字檔案與二進位制檔案的區別
- 二進位制檔案視覺化(二)視覺化
- flutter-讀寫二進位制檔案到裝置Flutter
- 第14周-閱讀專案3-seekg()、tellg()等函式的功能及其用法函式
- 第2周專案-課後實踐·閱讀程式(1)
- 第2周專案-課後實踐·閱讀程式(2)
- Git處理二進位制檔案Git
- MySQL二進位制檔案(binlog)MySql
- 第13周-閱讀專案1-標準輸入輸出物件及文字檔案物件
- 修改二進位制引數檔案(SPFILE)的方法之一
- 第4周專案4-指向學生類的指標指標
- [golang] cgo專案如何編譯便攜版二進位制檔案Golang編譯
- 如何將日誌檔案和二進位制檔案快速匯入HDFS?
- 二進位制檔案和符號檔案(PDB)如何校驗是否匹配符號
- 介面返回二進位制檔案的下載。
- Java二進位制Class檔案格式解析Java
- c++ 二進位制儲存檔案C++
- 使用UltraEdit 拷貝二進位制檔案
- 開啟和設定mysql 二進位制檔案位置MySql
- JS操作二進位制方法 - blobJS