Binäres Kopieren Algorithmus



  • Hallo,

    Wieso haut dieser Code nicht hin: (Es werden nur 24-Byte von 4MByte kopiert)

    #include <stdio.h>
    #include <stdlib.h>
    
    #define PATH_SRC "C:\\Users\\Steven\\Desktop\\original.mp3"
    #define PATH_DST "C:\\Users\\Steven\\Desktop\\copied.mp3"
    
    int main(void)
    {
    	FILE *file_src = NULL, *file_dst = NULL;
    	char byte;
    
    	//byte-Weise Datei auslesen und kopieren
    	if((file_src = fopen(PATH_SRC, "r")) == NULL)
    	{
    		printf("%s konnte nicht geoffnet werden\n", PATH_SRC);
    
    		return EXIT_FAILURE;
    	}
    
    	if((file_dst = fopen(PATH_DST, "w")) == NULL)
    	{
    		printf("%s konnte nicht geoffnet werden\n", PATH_DST);
    
    		return EXIT_FAILURE;
    	}
    
    	while((byte = fgetc(file_src)) != EOF)
    	{
    		fputc(byte, file_dst);
    	}
    
    	fclose(file_src);
    	fclose(file_dst);
    
    	return EXIT_SUCCESS;
    }
    


  • MP3s sind Binärdateien, also solltest du die Dateien mit "rb" bzw. "wb" öffnen. Ich persönlich würde zum Lesen/Schreiben in dem Fall auch eher fread/fwrite nutzen.



  • Aber wieso geht es mit dem Modus "r" & "w" sowie mit fgetc() und fputc() nicht. Was ist der Hintergrund? Was ist der technische background?

    viele grüße



  • Das Zeichen '\x1A' wird unter Windows bei Textdateien als Dateiende angesehen.


Anmelden zum Antworten