【发布时间】:2011-09-25 13:34:00
【问题描述】:
我想使用不同的名称多次复制一个文件。
程序是这样的:
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include <sstream>
#include<cstring>
using namespace std;
main()
{
string text;
int i;
char ch;
ostringstream oss;
FILE *fp1,*fp2;
if((fp1=fopen("One Dollar.jpg", "rb"))==NULL)
{
cout<<"Error";
exit(-1);
}
for(i=1; i<=5; i++)
{
oss << "C:\\5241 Dollar\\One Dollar " << i << ".jpg";
text = oss.str();
if((fp2=fopen(text.c_str(), "wb"))==NULL)
{
cout<<"Error "<<i;
exit(-1);
}
while(!feof(fp1))
{
fread(&ch, 1, 1, fp1);
fwrite(&ch, 1, 1, fp2);
}
fclose(fp2);
/* for(int j=0;j<30000;j++)
for(int k=0;k<30000;k++)
if(k==3000)
cout<<k; */
}
fclose(fp1);
}
这里有两个文件流,一个是源文件,另一个是目标文件。我以二进制读取模式加载实际文件,将目标文件加载为二进制写入模式。我使用了一个 for 循环来完成这项工作。但是一旦循环第二次迭代,fp2 的文件打开就会失败。我得到了输出:错误 2。
我怎样才能使代码工作?
【问题讨论】:
-
其实这不是错误,即编译器没有显示任何错误。坏的。这可能是一个错误......第二次,我得到输出:来自这个 if 语句的错误 2:if((fp2=fopen(text.c_str(), "wb"))==NULL)
-
@user817824 更新了我的回复
-
您正在使用 C++ 类。为什么不使用
fstream而不是 C 文件函数? -
我还没有学过 C++ 文件 I/O。 :(
-
@Griwes 这个问题中的任何问题都不能通过切换到 C++ 文件结构来解决