65,210
社区成员
发帖
与我相关
我的任务
分享
#include <cassert>
#include <fstream>
#include <iostream>
using namespace std;
#define _CLogDebug(_log) { std::cout << _log<< std::endl; }
//
void test_File_append()// ftell, fseek,
{
FILE *mc = NULL;
errno_t err = fopen_s(&mc, "F:/c++/tst/binary_file_append/binary_file_append/testfile_c.mc", "wb");
if (err != 0){
_CLogDebug("Error opening file");
return ;
}
// append ABC
fseek(mc, 0, SEEK_END);
fwrite("ABC", 3, 1, mc);
// append W
long posBlockSize=ftell (mc);
fwrite("W", 1, 1, mc);
_CLogDebug("posBlockSize="<<posBlockSize);
// append XYZ
fwrite("XYZ", 3, 1, mc);
long posBlockEnd=ftell (mc);
_CLogDebug("posBlockEnd="<<posBlockEnd);
// modify W
fseek(mc, posBlockSize, SEEK_SET);
_CLogDebug("modify W pos="<<ftell (mc));
fwrite("M", 1, 1, mc);
fseek(mc, posBlockEnd, SEEK_SET);
assert(ftell(mc)==posBlockEnd);
//期望结果:ABCMXYZ 实际结果:ABCWXYZM
fclose(mc);
}
//
void test_File_append2()// fgetpos, fsetpos
{
FILE *mc = NULL;
errno_t err = fopen_s(&mc, "F:/c++/tst/binary_file_append/binary_file_append/testfile_c2.mc", "ab");
if (err != 0){
_CLogDebug("Error opening file");
return ;
}
// append ABC
fseek(mc, 0, SEEK_END);
fwrite("ABC", 3, 1, mc);
// append W
fpos_t posBlockSize;
fgetpos(mc, &posBlockSize);
fwrite("W", 1, 1, mc);
_CLogDebug("posBlockSize="<<posBlockSize);
// append XYZ
fwrite("XYZ", 3, 1, mc);
fpos_t posBlockEnd;
fgetpos(mc, &posBlockEnd);
_CLogDebug("posBlockEnd="<<posBlockEnd);
// modify W
fsetpos(mc, &posBlockSize);
_CLogDebug("modify W pos="<<ftell (mc));
fwrite("M", 1, 1, mc);
fsetpos(mc, &posBlockEnd);
assert(ftell(mc)==posBlockEnd);
//期望结果:ABCMXYZ,实际结果:ABCWXYZM
fclose(mc);
}
int main()
{
//test_File_append();
test_File_append2();
return 1;
}
FILE* f = fopen("filename", r+);
FILE* f = fopen("filename", r+);
fseek(f, 0, SEEK_END);
fwrite("something", sizeof(char), cnt, f);
fclose(f);
f = 0;
/* fseek example */
#include <stdio.h>
int main ()
{
FILE * pFile;
pFile = fopen ( "example.txt" , "w" );
fputs ( "This is an apple." , pFile );
fseek ( pFile , 9 , SEEK_SET );
fputs ( " sam" , pFile );
fclose ( pFile );
return 0;
}