FILE kopieren
-
Ich verstehe nicht, warum der Inhalt der Source-Datei nicht in die Destination-Datei geschrieben wird.
Die Ziel-Datei wird zwar erstellt, aber halt leer
#include <stdio.h>
#include <stdlib.h>int kopiere(char *src, char *dest) { FILE *quelle; FILE *ziel; int rc=0; int c; quelle=fopen(src,"r"); if(quelle) { ziel=fopen(dest,"a"); if(ziel) { while((c=fgetc(ziel))!=EOF) { if(fputc(c,ziel)==EOF); { printf("Konnte nicht geschrieben werden\n"); } rc=1; } } else { printf("FEHLER"); } fclose(quelle); fclose(ziel); } else { printf("\nSource '%s' kann nicht gelesen werden\n",src); rc=0; } return rc; } main(int argc, char *argv[]) { char *src; char *dest; if(argc!=2) { src=argv[1]; dest=argv[2]; if(kopiere(src,dest)) { printf("ERFOLGREICH\n"); } else { printf("ERROR\n"); } } else { printf("UNGÜLTIGE ANZAHL AN PARAMETER\n"); exit(-1); } }
-
Wie wärs mit fgetc(quelle) statt fgetc(ziel)
-
ach lol..ok danke
-
Habe eine Frage zu diesem Block. Ich möchte über die Kommandozeile 2 Parameter Source und Destination übergeben..Nun ist das doch so, dass der Programmname auch gezählt wird..das heiß doch, dass argc=3 sein müsste oder nicht.
Wenn ich das Problem so löse, steht argc bei 3if(argc!=3) { //FEHLER exit(-1); }
Wenn ich das aber so löse, springe ich direkt in den else-Zweig. Deshalb muss ich argc auf 2 überprüfen. Warum wird der Programmname hier nicht mitgezählt, verstehe ich irgendwie nicht so ganz..
if(argc!=3) { //Kopiere; } else { //FEHLER }
-
Das kann nicht sein.
Wie du richtig erkannt hast, wird argv[0] bei argc mitgezählt, wahrscheinlich hast du deine beiden Parameter nicht korrekt angegeben.
-
in meinem ersten post überprüfe ich deswegen argc auf den wert 2..
bei 3 wird in den else-Zweig gesprungen../Edit:OK, war ein logikfehler..