将一个文件中的内容倒过来写到另一个文件中?

cnepine 2006-01-22 09:47:59
将一个 1M -10M 的文件,倒过来存储到另一个文件,就是前一个文件的最后一个
字符存到新文件的第一个字符,以此类推。
...全文
324 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
hikoolar 2006-01-25
看了楼上的很多方法,如果文件很大的话好像都没有好好考虑啊。
想到以前用汇编做的作业,每次COPY 1024个Byte,直到整个文件拷贝结束。
所以希望LZ能够考虑一下这个问题。
  • 打赏
  • 举报
回复
BombZhang 2006-01-25
using namespace std;
vector<unsigned char> dataarray;
然后每从文件中读取一个字节数据a就写入dataarray:dataarray.push_back(a);

读取结束后,循环调用用dataarray.pop_back()获取数据逐个写入文件即可。
  • 打赏
  • 举报
回复
healer_kx 2006-01-25
看Windows核心编程的内存映射文件拿一章.你会发现其他的办法都不是啥好办法.
  • 打赏
  • 举报
回复
MadLee 2006-01-25
#include <iostream>
#include <algorithm>

using namespace std;

int main() {
ifstream input("test.txt");
stringstream temp;
temp << input.rdbuf();
reverse(temp.str().begin(), temp.str().end());
ofstream output("result.txt");
output << temp.rdbuf();
}

  • 打赏
  • 举报
回复
zhouhuahai 2006-01-25
用STL来做最简单,用一个string来存储文件内容,再reverse,再写入新文件.
  • 打赏
  • 举报
回复
bombwang 2006-01-25
mark
  • 打赏
  • 举报
回复
JOKER_UFO 2006-01-23
#include<fcntl.h>
#include<sys/stat.h>
#include<sys/types.h>
#include<io.h>
#include<stdio.h>
#include<iostream>

using namespace std;


int main()
{
FILE * stream;
char * lp;
char * temp;//交换区;
unsigned long Len=0;//文件大小;
int fd,err;
fd=_open("f:\\1.txt",_O_RDONLY);//f盘下的文件,你可该路径;
if(fd ==-1)
{
cout<<"不能打开你的文件!"<<endl;
}
else
{
Len=_filelength(fd);
lp = new char[Len];
temp = new char[Len];
_close(fd);//释放文件描述符;
stream=fopen("f:\\1.txt","r+");
fread(lp,sizeof(char),Len,stream);
fclose(stream);
if( (fd = _open("f:\\1.txt", _O_RDWR | _O_CREAT, _S_IREAD | _S_IWRITE )) != -1)
{
for(int i=Len-1;i>=0;i--)
{
temp[Len-1-i]=lp[i];
}
if(err=_write(fd,temp,Len)==-1)
{
cout<<"写入错误!"<<endl;
return 0;
}
else
{
cout<<"写入成功!"<<endl;
_close(fd);//释放文件描述符;
}
}
delete [] temp;
delete [] lp;
}
return 0;
}
不也可不设置文件交换区,把指针从最后字节开始一个字符一个字符考入文件也可。
  • 打赏
  • 举报
回复
DaySummer 2006-01-22
void writeBack()
{
QFile file_1("\home\xxx.xxx");
QFile file_2("\home\xxxBack.xxx");
file_1.open(Read_Only);
file_2.open(Raw|Write_Only);

uint fileSize=file_1.size();
QString tmp;

for(uint i=fileSize; i==0; i--)
{
tmp=file_1.readBlock(i, 1);
file_2.writeBlack(fileSize-i, tmp);
}
}
}
  • 打赏
  • 举报
回复
cenlmmx 2006-01-22
用文件映射放到内存的一段buffer,然后指针就在buffer中从后往前读写新文件.
  • 打赏
  • 举报
回复
ma100 2006-01-22
  • 打赏
  • 举报
回复
发帖
C++ 语言
加入

6.2w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
申请成为版主
帖子事件
创建了帖子
2006-01-22 09:47
社区公告
暂无公告