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" );
}
string[num] = '\0';
KnightsFlipRecursion( string, 0, num, fout );
fprintf( fout, "\n" );
free( string );
}
我正在尝试分配内存,但是从指针到大小不同的整数强制转换时出现两个警告,并且从指针进行赋值会使整数无强制转换。我在做什么错了?
答案 0 :(得分:1)
您的代码中有几个问题。
首先,您要将结果从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 );
}
}