Datei einlesen Problem

Hallasas

Erfahrenes Mitglied
Hallo Community.
Ich habe ein Problem beim Einlesen einer Datei:
C++:
void ReadFile ( char *Filename, char *Buffer )
{
	FILE *pFile = fopen ( Filename, "rb" );
	int iFileSize;

	if( pFile != NULL )
	{
		fseek ( pFile, 0, SEEK_END );
		iFileSize = ftell ( pFile );
		Buffer    = (char *) malloc ( iFileSize );

		fseek ( pFile, 0, SEEK_SET );
		fread ( Buffer, 1, iFileSize, pFile );
	}
	fclose ( pFile );
}

//...

char *Buffer = NULL;
ReadFile ( "text.txt", Buffer );
printf ( "%s", Buffer );
Beim Kompilieren gibt es keine Probleme, jedoch werden "komische Zeichen" an den Buffer angehängt, nachdem ich ihn ausgebe...
Nun meine Frage:
Wie kann ich Dies beheben ? Wenn möglich immer noch im Bereich "C" ?

Ich freue mich über eure Hilfe.
Gruß Hallasas
 
Zuletzt bearbeitet von einem Moderator:
Hallo,
da dürfte die Terminierung des Strings fehlen:
C++:
if( pFile != NULL )
{
    fseek ( pFile, 0, SEEK_END );
    iFileSize = ftell ( pFile );
    Buffer    = (char *) malloc ( iFileSize + 1); // ein Zeichen mehr für '\0' reservieren

    fseek ( pFile, 0, SEEK_SET );
    fread ( Buffer, 1, iFileSize, pFile );
    
    Buffer[iFileSize] = '\0'; // String terminieren
    
}
fclose ( pFile );
Nicht vergessen, irgendwann auch mal "free" (als Gegenstück zu "malloc") aufzurufen.

Gruß
MCoder
 
Zurück