вот написал программу, функция должна копировать один файл в другой, но она этого не делает, копирует один символ, в чем ошибка , подскажите. Все компилируется
int coding()
{
fstream file1(inputfile, ios::in); //исходный файл
fstream file2(outputfile, ios::out); // конечный файл
if(!file1.is_open() || !file2.is_open())
{
cout << " Ошибка !!/n"
<<"Не могу открать файлэ\n";
exit(1);
}
//буффер для данных и индекс положения
char buffer;
int index1=0;
int index2=0;
file1.seekg(0, ios::beg);
file2.seekp(0, ios::beg);
file1.read(&buffer, 1);
while(file1.good() && file2.good())
{
file2.write(&buffer,1);
index1++;
index2++;
file1.seekp(index1);
file2.seekg(index2);
file1.read(&buffer,1);
cout<<" записал \n";
}
file1.close();
file2.close();
}
[C++] потоки
Started By libricon, янв 16 2005 16:29
5 ответов в этой теме
#3
Отправлено 17 января 2005 - 15:04
мне надо что-б именно таким способом, я хочу записать первый файл во второй в обратном порядке, а не получается,так что только посимвольно и с функцией seekp seekg. Где ошибка, почему он только один символ переписывает?
Пингвин птица гордая, пока не пнешь, не полетит!!!
#5
Отправлено 17 января 2005 - 20:27
вот, заработала как надо, если есть придирки к коду, жду.
и еще такой вопросик, почему агрумент m не работает?
ifstream file1(inputfile,ios::in | ios::binary); ofstream file2(outputfile,ios::out | ios::binary); int n1; n1 = file1.tellg(); file1.seekg (0,ios::end); int n2; n2 = file1.tellg(); int size = n2-n1; cout<<"Размер файла :"<<size<<endl; int index1=0; int index2=size; file1.seekg(0, ios::beg); file2.seekp(size, ios::beg); char buffer; file1.read(&buffer, 1); while (file1.good()) { file2.write(&buffer, 1); index1++; index2--; file1.seekg(index1, ios::beg); file2.seekp(index2, ios::beg); file1.read(&buffer, 1); } file1.close(); file2.close();
и еще такой вопросик, почему агрумент m не работает?
int next_option; const char* const short_options = "i:o:m:h"; const struct option long_options[] = { {"input", 1, NULL, 'i'}, {"output", 1, NULL,'o'}, {"mode",1, NULL, 'm'}, {"help",0, NULL, 'h'}, {NULL, 0, NULL, 0}, }; do { next_option = getopt_long (argc, argv, short_options, long_options,NULL); switch (next_option) { case 'i': inputfile = optarg; break; case 'o': outputfile = optarg; break; case 'm': mode = optarg; break; case 'h': print_usage (stdout, 0); case '?': print_usage (stderr, 1); case -1: break; } } while (next_option != -1);
Пингвин птица гордая, пока не пнешь, не полетит!!!