有没有办法从文本文件中删除最后10个字符?
由于
答案 0 :(得分:9)
对于POSIX平台上的单字节编码,您可以使用类似的内容(省略错误处理):
FILE *file = fopen("filename", "a");
fseek(file, -10, SEEK_END);
ftruncate(fileno(file), ftell(file)); // POSIX function
对于具有可变长度字符的编码,例如UTF-8和UTF-16,它不起作用。
答案 1 :(得分:3)
对于可以在Windows下工作的东西,你也可以这样做:
FILE* pFileIn = fopen( "filenameIn", "rb" );
FILE* pFileOut = fopen( "filenameOut", "w+b" );
fseek( pFileIn, -10, SEEK_END );
long length = ftell( pFile );
long blockSize = 16384;
void* pBlock = malloc( blockSize );
long dataLeft = length;
while( dataLeft > 0 )
{
long toCopy = (dataLeft > blockSize) ? blockSize : dataLeft;
fread( pBlock, toCopy, 1, pFileIn );
fwrite( pBlock, toCopy, 1, pFileOut );
dataLef -= toCopy;
}
free( pBlock );
fclose( pFileIn );
fclose( pFileOut );