第13周-閱讀專案3-對文字檔案的訪問

kewlgrl發表於2015-06-10
問題及程式碼:

#include<iostream>  
#include <fstream>  
#include<cstdlib>  
using namespace std;  
int main( )  
{  
    int a[10];  
    ofstream outfile("f1.dat",ios::out);//定義檔案流物件,開啟磁碟檔案"f1.dat"  
    if(!outfile)                        //如果開啟失敗,outfile返回0值  
    {  
        cerr<<"open error!"<<endl;  
        exit(1);  
    }  
    cout<<"enter 10 integer numbers:"<<endl;  
    for(int i=0; i<10; i++) //向磁碟檔案"f1.dat"輸出資料  
    {  
        cin>>a[i];  
        outfile<<a[i]<<" ";  
    }  
    cout<<"The numbers have been writen to file. "<<endl;  
    outfile.close();       //關閉磁碟檔案"f1.dat"  
    return 0;  
}  


執行結果:



問題及程式碼:

#include<iostream>  
#include <fstream>  
#include<cstdlib>  
using namespace std;  
int main( )  
{  
    int a[10],max,i,order;  
    ifstream infile("f1.dat",ios::in);  
    //定義輸入檔案流物件,以輸入方式開啟磁碟檔案f1.dat  
    if(!infile)  
    {  
        cerr<<"open error!"<<endl;  
        exit(1);  
    }  
    for(i=0; i<10; i++)  
    {  
        infile>>a[i];  //從磁碟檔案讀入10個整數,順序存放在a陣列中  
        cout<<a[i]<<" ";  
    }          //在顯示器上順序顯示10個數  
    cout<<endl;  
    max=a[0];  
    order=0;  
    for(i=1; i<10; i++)  
        if(a[i]>max)  
        {  
            max=a[i];                //將當前最大值放在max中  
            order=i;                 //將當前最大值的元素序號放在order中  
        }  
    cout<<"max="<<max<<endl<<"order="<<order<<endl;  
    infile.close();  
    return 0;  
}  


執行結果:



問題及程式碼:

#include<iostream>  
#include<fstream>  
#include<cstdlib>  
using namespace std;  
void save_to_file( );  
void get_from_file();  
int main( )  
{  
    save_to_file( );  
    //呼叫save_to_file( ),從鍵盤讀入一行字元並將其中的字母存入磁碟檔案f2.dat  
    get_from_file( );  
    //呼叫get_from_file(),從f2.dat讀入字母字元,改為大寫字母,再存入f3.dat  
    return 0;  
}  
  
// save_to_file函式從鍵盤讀入一行字元,並將其中的字母存入磁碟檔案  
void save_to_file( )  
{  
    ofstream outfile("f2.dat");  
    //定義輸出檔案流物件outfile,以輸出方式開啟磁碟檔案f2.dat  
    if(!outfile)  
    {  
        cerr<<"open f2.dat error!"<<endl;  
        exit(1);  
    }  
    char c[80];  
    cin.getline(c,80);         //從鍵盤讀入一行字元  
    for(int i=0; c[i]!=0; i++) //對字元逐個處理,直到遇′/0′為止  
        if((c[i]>=65 && c[i]<=90)||(c[i]>=97 && c[i]<=122))//如果是字母字元  
        {  
            outfile.put(c[i]);       //將字母字元存入磁碟檔案f2.dat  
            cout<<c[i];  
        }                            //同時送顯示器顯示  
    cout<<endl;  
    outfile.close();                 //關閉f2.dat  
}  
  
//從磁碟檔案f2.dat讀入字母字元,將其中的小寫字母改為大寫字母,再存入f3.dat  
void get_from_file()  
{  
    char ch;  
    ifstream infile("f2.dat",ios::in);  
    //定義輸入檔案流outfile,以輸入方式開啟磁碟檔案f2.dat  
    if(!infile)  
    {  
        cerr<<"open f2.dat error!"<<endl;  
        exit(1);  
    }  
    ofstream outfile("f3.dat");  
    //定義輸出檔案流outfile,以輸出方式開啟磁碟檔案f3.dat  
    if(!outfile)  
    {  
        cerr<<"open f3.dat error!"<<endl;  
        exit(1);  
    }  
    while(infile.get(ch))//當讀取字元成功時執行下面的複合語句  
    {  
        if(ch>=97 && ch<=122)          //判斷ch是否為小寫字母  
            ch=ch-32;                  //將小寫字母變為大寫字母  
        outfile.put(ch);               //將該大寫字母存入磁碟檔案f3.dat  
        cout<<ch;                      //同時在顯示器輸出  
    }  
    cout<<endl;  
    infile.close( );                 //關閉磁碟檔案f2.dat  
    outfile.close();                 //關閉磁碟檔案f3.dat  
} 


執行結果:





知識點總結:
對文字檔案的訪問。

學習心得:

經常有寫入檔案的時候出現寫入檔案過大。。最多一次達到172M。。。

感覺和讀取的原始檔有關,但又不知道到底什麼關係。。

相關文章