bool CReadWrite::write(unsigned long long offset, void* pvsrc, unsigned long long nbytes)
{ int m_WriteResult;
pFile = fopen("E:\\myfile.bin","wb");
if (!pFile){
puts("Can't open file");
return false;
}
fseek(pFile,SIZE_OF_FILE-1,SEEK_SET);
fwrite(pvsrc,1,1,pFile);
fseek(pFile,offset,SEEK_SET);
printf("fseek(pFile,SIZE_OF_FILE-1,SEEK_SET); returned -- ", fseek(pFile,SIZE_OF_FILE-1,SEEK_SET));
printf("fwrite(pvsrc,1,1,pFile); returned -- %d", fwrite(pvsrc,1,1,pFile));
printf("Current file pointer position is : %d\n",ftell(pFile));
m_WriteResult = fwrite (pvsrc, 1, nbytes, pFile);
if (m_WriteResult == nbytes){
puts("Wrote to file");
printf("The number of bytes written to the file is : %d\n\n",m_WriteResult);
fclose(pFile);
return true;
}
else{
puts("Unable to write to File.");
fclose(pFile);
return false;
}
}
main.cpp中:讀寫緩衝區發出
char* pWriteBuffer;
char* pReadBuffer;
int nbytes = 85;
int nbytes2= 10;
pWriteBuffer = new char [nbytes];
pReadBuffer = new char [nbytes];
CReadWrite test;
for(Bufferndx = 0; Bufferndx<nbytes; Bufferndx++){
pWriteBuffer[Bufferndx] = Bufferndx;
}
test.write(20,pWriteBuffer,50);
for(Bufferndx = 10; Bufferndx;Bufferndx--){
pWriteBuffer[Bufferndx] = Bufferndx;
}
test.write(30,pWriteBuffer,nbytes2);
test.read(5,pReadBuffer,85);
delete[] pWriteBuffer;
delete[] pReadBuffer;
這是我計劃的一部分寫入給定的緩衝區。寫函數被賦予一個偏移量,一個源和多少個字節來寫。
它首先檢查文件是否能夠打開,fseek
s到我想要的文件大小-1,然後寫入一個字節。然後在文件中給出fseek
s給出的偏移量。如果它成功地寫了nbytes
,它會打印出一些東西,然後關閉文件。否則,它會打印出無法寫入和關閉文件。
在我的主要,我只是測試,我的代碼實際上寫了我想要的,我有兩個for循環有兩個後寫道。此後我也在做test.read
,但我不確定爲什麼我無法看到正確的結果,我認爲我應該在編譯時進入調試模式。
僅供參考,read
類函數幾乎與write
相同,但當然fread
。
我的問題是:爲什麼我沒有得到結果,當我逐步使用調試模式,爲什麼我無法看到緩衝區被正確填充。這「幾乎」就像我的write
s/read
沒有真正發生。
編輯:我在「試圖做」是填充一個85字節的緩衝區(我最大的緩衝區)。
- 我的
test.write(20,pWriteBuffer,50)
將從偏移量20開始並寫入50個字節,也就是說。抵消20 - 70。 - 我的第二個寫
test.write(30,pWriteBuffer,nbytes2)
將從偏移量30開始,寫10個字節,又名。抵消20-30。 - 第三,我讀了整個事情,我應該能夠告訴所有寫入發生在哪裏。
或者這是計劃,但我沒有看到,當我調試。另外,也許有人可以提供一些線索上這一點,但我審查過它,它看起來像我......
fseek(pFile,SIZE_OF_FILE-1,SEEK_SET);
fwrite(pvsrc,1,1,pFile);
每次我寫的這是不對的
...我不應該求每次寫入時使文件變大。呃
printf(「fwrite(pvsrc,1,1,pFile); returned - %d」,fwrite(pvsrc,1,1,pFile)); //打印1
printf(「fseek(pFile,SIZE_OF_FILE-1,SEEK_SET); returned - 」,fseek(pFile,SIZE_OF_FILE-1,SEEK_SET)); //打印出0
「**當我逐步使用調試模式**時,爲什麼我沒有得到結果」是否意味着您在不使用調試步驟時可以得到正確的結果? – Kashyap
你有什麼?你期望得到什麼? –
見上面編輯 – Questioneer