Fehlende teile beim Kopieren mit fputc()
-
ich schreibe jetzt schon eine weile an diesem Programm herum.
nach dem ich eine größere Datei damit kopiert habe fehlen teilweise ganze Segmente dieser Datei woran kann das liegen.
zum überprüfen benutze ich einen hex Editor mit dem ich beide Dateien öffne und so genauer vergleichen kann.
danke schon mal im Voraus.
void Codiren () { char Dada1[255] =("Test.exe"); char Dada1a[255] =(""); char Dada12[5] =(".xsf"); printf("Welche Datei soll ich lessen\n"); //scanf("%s",Dada1); // später aktiviren FILE *datei; FILE *datei2; int short c; int schleife1 = 0; strcat(Dada1a, Dada1); strcat(Dada1a, Dada12); datei = fopen (Dada1, "r"); datei2 = fopen (Dada1a, "w"); if (datei2 != NULL && datei != NULL) { printf("Lesen Erfolgreich !! wuhu !!\n"); printf("schreibe datei bitte warten"); while ((c = fgetc(datei)) != EOF) { fputc(c, datei2); } printf("\nschliese lesse und schreib forgang \n"); fclose (datei); fclose (datei2); } else printf("Lesen der datei %s Felgeschlagen\n", Dada1); printf("\n[%c]",c); return 0; }
-
Öffne die Dateien im binary Modus (
"rb", "wb"
).
Nutze lieberfread()
undfwrite
().Es kann passieren, dass du nur eine Datei erfolgreich öffnest. Dann schließt du sie aber nicht mehr.
-
fgetc()
gibt einint
zurück.
fputc()
erwartet einint
als Zeichen.
Dann gib den Funktionen auch die richtgen Typen.Dein erstes
strcat()
sollte einstrcpy()
sein
-
So ich hab es mal weitest gehend abgeändert
#include <stdio.h> #include <stdlib.h> void Codiren () { char DateiName1[255] =("Test.exe"); char DateiName2[255] =(""); char DateiAnhang1[5] =(".xsf"); int c; printf("Welche Datei soll ich lessen\n"); //scanf("%s",Dada1); // später aktiviren strcat(DateiName1, DateiName2); strcat(DateiName1, DateiAnhang1); FILE *datei = fopen (Dateiname1, "rb"); if (datei != NULL) { FILE *datei2 = fopen (Dateiname2, "wb"); printf("Lesen Erfolgreich\n"); printf("schreibe datei bitte warten"); while ((c = fgetc(datei)) != EOF) { fputc(c, datei2); } printf("\nschliese lesse und schreib forgang \n"); fclose (datei); fclose (datei2); } else printf("Lesen der datei %s Felgeschlagen\n", DateiName1); printf("\n[%c]",c); return 0; }
Edit oh da ist ja noch was dazu gekommen
-
arg so jetzt kann das auch Compilert werden grummle
und es kopiert jetzt komplette Dateien
mit den Funktionen fread() und fwrite(). hab ich mich noch nicht auseinander gesetzt werde ich aber gleich mal machen
strcpy() macht irgend wie nicht`s mal schauen woran es liegt
also danke erst mal
#include <stdio.h> #include <stdlib.h> void Codiren () { char DateiName1[255] =("Test.exe"); char DateiName2[255] =(""); char DateiAnhang1[5] =(".xsf"); int c; printf("Welche Datei soll ich lessen\n"); //scanf("%s",Dada1); // später aktiviren strcpy(DateiName2, DateiName1); strcat(DateiName2, DateiAnhang1); FILE *datei = fopen (DateiName1, "rb"); if (datei != NULL) { printf("Lesen Erfolgreich\n"); FILE *datei2 = fopen (DateiName2, "wb"); printf("schreibe datei bitte warten"); while ((c = fgetc(datei)) != EOF) { fputc(c, datei2); } printf("\nschliese lesse und schreib forgang \n"); fclose(datei); fclose(datei2); } else printf("Lesen der datei [%s] Felgeschlagen\n", DateiName1); fclose(datei); printf("Lesen der DateiName1 [%s] \n", DateiName1); printf("Lesen der DateiName2 [%s] \n", DateiName2); printf("\n[%c]",c); return 0; } }
-
Und funktioniert es jetzt?
Meckert der Compiler nicht mehr?
Auch keine Warnungen?
-
doch doch mom hab bissel was verschusselt
erst mal das man void kein return gibt ok des ist weg.
aber was will er mir damit sagen
13 warning: implicit declaration of function 'strcpy'|
13 warning: incompatible implicit declaration of built-in function 'strcpy'|
14 warning: implicit declaration of function 'strcat'|
14 warning: incompatible implicit declaration of built-in function 'strcat'|
36 warning: 'return' with a value, in function returning void|
||=== Build finished: 0 errors, 5 warnings ===|
-
Das hat sich jetzt etwas überschnitten
Modus1984 schrieb:
strcpy() macht irgend wie nicht`s mal schauen woran es liegt
Deine
strcat()
mit den Dateinamen macht auch etwas anderes als die mit dem Dada
-
jop hab mir da nen Fehler eingebaut als ich die Namen geändert hab
-
#include <string.h>
vergessen.
-
oh danke sehr
jetzt sind keine Warnungen mehr da
super danke dir