从指针转换为不同大小和赋值的整数,使指针从整数转换而无需强制转换

时间:2019-03-12 02:46:14

标签: c

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 );
}

我正在尝试分配内存,但是从指针到大小不同的整数强制转换时出现两个警告,并且从指针进行赋值会使整数无强制转换。我在做什么错了?

1 个答案:

答案 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 );
    }
}