Tach @ all,
Ich hab unter LINUX ein kleines Programm geschrieben, das datein einlesen und mit eventl. anderem Namen wieder ausgeben soll ( vergleichbar mit cpy ).
Funktioniert soweit auch (bei txt zb).
Wenn ich aber mp3 Datein "kopieren" will dann macht er auch eine Kopie, die aber
nicht abgespielt werden kann.
Fehler:
Warum nicht einfach die systemfunkion "cpy" verwenden ?
...Das Programm soll in etwas abgewandter Form noch für Dateiübertragung mit sockets dienen.
Was mache ich falsch?
THX FÜR EURE HILFE
Hier der Programmcode :
Ich hab unter LINUX ein kleines Programm geschrieben, das datein einlesen und mit eventl. anderem Namen wieder ausgeben soll ( vergleichbar mit cpy ).
Funktioniert soweit auch (bei txt zb).
Wenn ich aber mp3 Datein "kopieren" will dann macht er auch eine Kopie, die aber
nicht abgespielt werden kann.
Fehler:
Code:
Konnte die Art des Datenstroms nicht ermitteln.
Warum nicht einfach die systemfunkion "cpy" verwenden ?
...Das Programm soll in etwas abgewandter Form noch für Dateiübertragung mit sockets dienen.
Was mache ich falsch?
THX FÜR EURE HILFE
Hier der Programmcode :
Code:
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char* argv[])
{
//check parameters
if ( argv[2] == NULL )
{
cerr << "1.source, 2.dest" << endl;
return 1;
}
//declare...
char* buf;
ifstream in;
ofstream out;
//open streams (binary)
in.open(argv[1], ios_base::in | ios_base::binary);
if ( !in )
{
cerr << "ERROR ==> file dosent exist " << endl;
return 1;
}
out.open(argv[2], ios_base::out | ios_base::binary);
if ( !out )
{
cerr << "ERROR ==> cant write to file" << endl;
return 1;
}
//get size
in.seekg(0, ios_base::end);
const unsigned long file_size = in.tellg();
in.seekg(0, ios_base::beg); //set read_pointer
//to begin of the stream
//allocate memory(HEAP) we need
buf = new char[file_size];
//copy streams
while (in.getline(buf, file_size, '\n') && !in.eof() )
{
out << buf << endl;
}
//kill streams
in.close();
out.close();
return 0;
}