2013-03-21 55 views
0

我有這個程序,我想讀取每個2 kb的小部分中的數據,然後將其寫入文件,但是當我嘗試做它讀寫我的文件四次。這裏是我的代碼:以固定的數量寫入數據,導致它重新編輯文件C++中的數據

#include<fstream> 
#include<iostream> 

using namespace std; 

ifstream::pos_type size; // use if file is larger than 2 gb 

int main() 
{ 
    char *memblock=0;  
    ifstream in("file.txt", ios::in | ios::binary | ios::ate); 
    ofstream in1("file1.txt", ios::out | ios::binary | ios::ate); 
    size = in.tellg(); 
    cout << "Size of file "<< size << endl; 
    float sz= size/2048.0; 
    int sizechck = ceil(sz); 
    cout<< "size is "<<sizechck; 
    if(in.is_open()) 
    { 
     memblock = new char [2048]; 
     for (j=0;j<=sizechck;j++) 
     { 
     in.seekg (j*2048,ios::beg); 
     in.read (memblock, 2048); 
     in1.write(memblock,2048); 
     } 

    } 
    system("pause"); 
    return 0; 
} 

回答

3

你正在讀寫4096字節,但你正在尋找2048.(你正在寫未分配的內存btw)。

你根本不需要尋求。讀和寫相應地移動文件指針。

+0

我已經做了一個編輯,如果我刪除「尋求」它只是發送一個數據f到整個文件,沒有任何工作。 – networks 2013-03-21 20:26:29

+0

@networks你是什麼意思的「無」?它會崩潰嗎?給空文件?根本沒有文件? – 2013-03-21 20:33:05

+0

它提供了單個字符,如文件中的「f」,沒有別的,但是如果我使用seekg,它會顯示我file1.txt,但是將兩次從file.txt寫入所有數據。 – networks 2013-03-21 20:34:47

相關問題