?
salut,
hab ein kleines Problem, und zwar verstehe ich nicht wieso bei diesem Programm, nur die ersten 4 Zeichen kopiert werden und nicht das ganze file....
#include <iostream>
#include <ctime>
#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 8192
void usage(char * name); //Initialisiere Funktion
void start_clock(clock_t & time);//Initialisierung
void print_time_used(clock_t time);//Initialisierung
bool GetThreadTimes( );
int main(int argc, char * argv[])
{
system("cls");
char antwort;
FILE *ausgabe,*eingabe;
int n=0;
char buffer[BUFFER_SIZE];
clock_t time=0; //Zeit auf 0 gesetzt
std::cout << "******************************************\n" <<std::endl;
if(argc != 3) usage(argv[0]); //überprüfe ob Parameterzahl ungleich 3 ist
if((eingabe = fopen(argv[1], "r")) == (FILE *) NULL)//überprüfe Parameter 1 (Eingabedatei)
{
std::cout <<"Eingabedatei existiert nicht!"<<std::endl;
exit(-1);
}
if((ausgabe = fopen(argv[2],"r")) != (FILE *) NULL)//Überprüfe ob Ausgabedatei geöffnet werden kann
{
std::cout <<"Die Ausgabedatei existiert schon!\nSoll sie trotzdem ueberschrieben werden? (j/n) " << std::endl;
std::cin >>antwort;
fclose(ausgabe); //schliesse die Ausgabedatei
if((antwort != 'j')&&(antwort != 'J'))//überprüfe ob Eingabe ungleich j/J ist...
{
std::cout << "\nKopiervorgang unterbrochen." <<std::endl;
exit(-1);
}
else
{
ausgabe=fopen(argv[2], "w");
}
}
if((ausgabe = fopen(argv[2],"w")) == (FILE *) NULL)//Öffne Datei zum schreiben...
{
std::cout << "Outputfile kann nicht geschrieben werden." << std::endl;
usage(argv[0]);
}
else
{
start_clock(time);
n=fread(buffer, 1, sizeof(BUFFER_SIZE), eingabe);
//std::cout << n;
std::cout <<buffer;
if(buffer==NULL)
{
std::cout <<"kein Speicher vorhanden"<<std::endl;
}
else
{
do
{
std::cout <<n;
fwrite(buffer, 1, n, ausgabe);//fwrite(buffer, 1, n, ausgabe);
n--;
}while(n>NULL);
fclose(ausgabe);//Schliesse die Ausgabedatei
fclose(eingabe);//Schliesse die Eingabedatei
}
}
std::cout <<"\nKopie wurde erstellt!" << std::endl;
printf("%d ", sizeof(buffer));
print_time_used(time);
return EXIT_SUCCESS;
}
void usage(char *name)//Ausgabe, falls Parameterübergabe falsch oder nicht vollständig eingegeben wurde
{
std::cout << "Parameter Fehler!" << std::endl;
exit(8);
}
void start_clock(clock_t &time)//start_clock Funktion, initialisiert die Zeit
{
time= clock();
if(time==clock_t(-1))
{
std::cerr << "sorry, no clock";
exit(1);
}
return;
}
void print_time_used(clock_t time)//print_time_used, zeigt die Differenz zwischen startzeit + endzeit
{
clock_t time2 = clock();
if(time2 == clock_t(-1))
{
std::cerr <<"sorry, clock overflow";
exit(2);
}
std::cout << "\nKopierdauer: " << 10000*double(time2-time)/CLOCKS_PER_SEC
<<" Millisekunden" <<std::endl;
return;
}
hoffe ihr könnt mir weiterhelfen...
mfg
beatrice