我想实现的功能如下 : 先写123456,保存当前指针的位置,继续写abcdef,再移动指针到 123456后面写入2,最后移动指针到文件尾部写入123456. 写好后的文件 1234562abcdef123456 但是下面的代码,写出来的是 123456abcdef2123456 ,指针移动对文件写入没有影响了。。请教高手帮忙啊 !卡住了。
#include <iostream.h>
#include "fstream.h"
void main()
{
fstream file;
file.open("c:\\123.txt",ios::binary|ios::in|ios::out|ios::app);
file.write("123456",6);
int nptrseekgsta=file.tellp();
file.write("abcdef",6);
file.seekp(nptrseekgsta);
short slen=2;
file.write("2",1);
file.seekp(ios::end);
file.write("123456",6);
file.close();
}
谢谢啊 !!!
#include <iostream.h>
#include "fstream.h"
void main()
{
fstream file;
file.open("c:\\123.txt",ios::binary|ios::in|ios::out|ios::app);
file.write("123456",6);
int nptrseekgsta=file.tellp();
file.write("abcdef",6);
file.seekp(nptrseekgsta);
short slen=2;
file.write("2",1);
file.seekp(ios::end);
file.write("123456",6);
file.close();
}
谢谢啊 !!!
int nptrseekgsta=file.tellp();
file.write("0",1); // 占个位置
file.write("abcdef",6);
file.seekp(nptrseekgsta, ios::begin);
代码如下#include <iostream.h>
#include "fstream.h"
void main()
{
fstream file;
file.open("c:\\123.txt",ios::binary|ios::in|ios::out|ios::app|ios::trunc);
file.write("123456",7);
int nptrseekgsta=file.tellp();
file.write("0",1); // 占个位置
file.write("abcdef",6);
file.seekp(nptrseekgsta, ios::beg);
short slen=2;
file.write("2",1);
file.seekp(ios::end);
file.write("123456",6);
file.close();
}
seekp(n)就是将文件定位到第n个字节处,然后再用write就可以写入了。 这英文已经解释了seekp不起作用的原因:使用ios::app模式,新内容只会写到文件的后面,所以seekp没有起作用...如果要用seekp定位,把ios::app删掉就可以了。
第二,file.write("123456",7); 是笔误,应该为file.write("123456",6)
第三,file.seekp(ios::end);用法错误,应该为file.seekp(0, ios::end); fstream file( "123.txt",ios::binary | ios::in | ios::out | ios::trunc );
file.write( "123456", 6 );
int nptrseekgsta = file.tellp();
file.write( "0", 1 ); // 占个位置
file.write( "abcdef", 6 );
file.seekp( nptrseekgsta, ios::beg );
file.write("2",1);
file.seekp( 0, ios::end );
file.write("123456",6);
file.close();
可以用cin流的putback(char)函数实现在文件指针当前指向位置插入一个字符。
注意,是插入哦 ^^