麻煩我寫了一個非常複雜的程序,這是目前竊聽了一個最後一件事: 這是我做的:C++從文件中讀取到緩存和寫回文件
我打開一個輸入文件。我將輸入文件char(char)讀入緩衝區。 然後我從緩衝區寫入輸出文件。
文件打開並讀取後 - 緩衝區中的char數組看起來與文件完全一樣。 輸入文件包含任何可能的符號。事實上 - 如果輸入文件是.jpg圖像,我應該能夠(在將擴展名更改爲.dat之後)將其讀入我的緩衝區,將其寫入輸出.dat文件,然後將擴展名更改回。 JPG,看到原始圖像。
我對一個簡單的2KB大型.txt文件(製作了一個.txt文件,將擴展名改爲.dat並運行我的程序)進行了測試。 如果輸入文件只包含簡單字符(比如說,一串數字1234215 ...) - 輸出文件是相同的(其大小也是2KB)。
如果輸入文件是由簡單字符組成,並且有新行(如果我已經按下ENTER,我認爲這是ACSII代碼13的字符,但我懷疑其他符號也會導致這種情況) - 文件是正確讀取到我的緩衝區(它的所有2048個字符,因爲它的大小是2KB,與文件中的相同,即使是ENTERS也是如此),但是在我將它寫回輸出文件後,輸出文件看起來 ,它似乎有相同數量的字符(沒有東西丟失,沒有額外的東西),但它的大小更大(例如 - 如果輸入是2KB,輸出是2.33KB)。
這應該發生 - 我懷疑有腐敗的地方,但我無法檢測到它,我不知道在哪裏看。
這是我寫的文件:
f=fopen("izlaz.dat","w");
file1 = FS::open(filename1, 'r');
long cnt = 0;
while(1) {
if(file1->eof()==0) {
char rb[1];
file1->read(1,rb);
fwrite(rb,1,1,f);
cnt++;
}
else {
std::cout << "cnt = " << cnt << std::endl;
fclose(f);
break;
}
}
file1->閱讀(1,RB)讀1噸焦炭
寫入或讀取到我的緩衝區,這是基本字符時,RB數組,我使用 char輸入;緩衝區[pos] =輸入; //寫入緩衝區 char output = buffer [pos]; //從緩衝器讀
伊夫還試圖從炭輸入到memcpy的於緩衝液[POS]和從緩衝液[POS]到char輸出但對腐敗沒有影響(它仍然損壞)
對不起對於文字牆 - 我希望有人能幫忙。我一直在嘗試我自己的3天:S
謝謝!在二進制模式("wb"
)