Hallo zusammen,
da ich mich wahrscheinlich, bei meinem letzten Post etwas undetlich ausgdrückt habe, möchte ich einen neuen Versuch starten:
Ich kopiere eine Datei, und möchte die enthaltenen Bits um n Stellen verschieben.
Leider tut mein Programm nicht das was es tun soll. Wer es ausprobieren möchte, dem stelle ich gerne den kompletten Sourcecode zu Verfügung.
Mein Code:
da ich mich wahrscheinlich, bei meinem letzten Post etwas undetlich ausgdrückt habe, möchte ich einen neuen Versuch starten:
Ich kopiere eine Datei, und möchte die enthaltenen Bits um n Stellen verschieben.
Leider tut mein Programm nicht das was es tun soll. Wer es ausprobieren möchte, dem stelle ich gerne den kompletten Sourcecode zu Verfügung.
Mein Code:
Code:
char filename_z[255];
int c;
int i;
int erg, erg2;
int key;
int beenden;
int zeichen;
int schreiben;
FILE *quelldatei, *zieldatei, *stream;
//Auf '\0' legen
for(i=0; i<254; i++){
filename_q[i] = '\0';
filename_z[i] = '\0';
}
system("cls");
printf("===============================================================================\n");
printf("= =\n");
printf("= HINWEIS: Es duerfen keine gleichen Dateinamen bzw. Pfade angegeben werden =\n");
printf("= BEDINGUNG: Dateiname Quelldatei != Dateiname Zieldatei =\n");
printf("= =\n");
printf("===============================================================================\n\n");
printf("<PFAD><NAME DER QUELLDATEI>:\t");
scanf("%s", filename_q);
quelldatei=fopen(filename_q, "rb");
if(quelldatei==NULL){
printf("Konnte Datei %s nicht finden bzw. oeffnen\n", filename_q);
return 0;
}
else{
printf("<PFAD><NAME DER ZIELDATEI>:\t");
scanf("%s", filename_z);
zieldatei=fopen(filename_z, "w+b");
}
if(zieldatei==NULL){
printf("Konnte Zieldatei nicht erzeugen!\n");
return 0;
}
else{
while((c=getc(quelldatei))!= EOF){
putc(c,zieldatei);
}
}
erg = fclose(quelldatei);
erg2= fclose(zieldatei);
//Zieldatei erneut öffnen
stream = fopen(filename_z, "r+b");
//Fehler-Überprüfung
if(stream==NULL){
printf("Konnte die Datei %s nicht finden\n", filename_z);
return 0;
}
printf("Key:\t");
scanf("%d", &key);
fflush(stdin);
beenden=0;
do{
zeichen = fgetc(stream);
if(ferror(stream)){
printf("Fehler!\n");
beenden = 1;
}
if(beenden==0){
if(zeichen==EOF){
beenden=1;
}
}
if(beenden==0){
zeichen += key;
schreiben = fputc(zeichen, stream);
if(schreiben==EOF){
printf("Fehler");
beenden=1;
}
}
}
while(beenden!=1);
return 0;
}