void KnightsFlip(FILE * fin,FILE * fout){ int num; fscanf(fin,“%d”,& num); fprintf(fout,“KnightsFlip:\ n”); char * string; string =(char)malloc((num + 1)* …
您的代码中存在一些问题。
首先,你要从中投出结果 malloc() 到了 char 而不是一个 char* 。这是导致您的问题所引发的错误的原因。
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 ); } }