В вашем коде есть пара проблем.
Сначала вы переводите результат с malloc()
на char
, а не char*
. Это и является причиной ошибки, к которой относится ваш вопрос.
Во-вторых - что происходит, когда malloc()
завершается неудачно, возвращая NULL. Код печатает сообщение точно, но оно все равно продолжается, как будто все в порядке.
Лучшим подходом может быть:
void KnightsFlip( FILE * fin, FILE * fout )
{
int num;
fscanf( fin, "%d", &num );
fprintf( fout, "KnightsFlip:\n" );
char *string;
string = ( char* ) malloc( ( num + 1 ) * sizeof( char ) );
if ( string == NULL )
{
printf( "Not Memory found" );
}
else
{
string[num] = '\0';
KnightsFlipRecursion( string, 0, num, fout );
fprintf( fout, "\n" );
free( string );
}
}