i have the same problem here
Code:
int main ( void )
{
sudokuPtr sudoku_list; // δείκτης στην αρχή της λίστας
sudokuPtr current_sudoku; // δείκτης στο τρέχων sudoku
sudoku_list = NULL; // αρχικοποιήσεις δεικτών
current_sudoku = NULL;
FILE *input, *output; // δείκτες αρχείων εισόδου-εξόδου
char sudoku_open[ LEN ]; // εδώ αποθηκεύεται το όνομα του αρχείου εισόδου
char sudoku_save[ LEN ]; // εδώ αποθηκεύεται το όνομα του αρχείου εξόδου
int selection; // εδώ αποθηκεύεται η επιλογή (απο το μενού) του παίκτη
int sudoku_id; // εδω αποθηκεύεται το id του επιλεγέντος (από τον παίκτη)sudoku
do
{
menu();
scanf( "%d", &selection );
switch( selection )
{
case 1:
printf ( "enter a file name\n" );
scanf ( "%s", sudoku_open ); // εισαγωγή ονόματος αρχείου εισόδου
printf ( "\n\n" );
input = fopen ( sudoku_open, "r" );
if ( input == NULL ) // έλεγχος ανοίγματος αρχείου εισόδου
{
printf ( "cant open %s file\nexit programm\n\n", sudoku_open );
exit ( 1 );
}
if ( !read_puzzle ( &sudoku_list, ¤t_sudoku, input ) ) // έλεγχος διαβάσματος αρχείου εισόδου
{
printf( "cant read %s file\nfile close and exit programm\n\n", sudoku_open );
fclose ( input );
exit ( 1 );
}
printf( "%s is loaded\n\n", sudoku_open );
fclose ( input ); // κλείσιμο αρχείου εισόδου
break;
case 2:
printf ( "select a sudoku\n(enter a valid id)\n" );
scanf ( "%d", &sudoku_id ); // επιλογή sudoku με βάση το id του.
printf ( "\n\n" );
search ( sudoku_list, ¤t_sudoku, sudoku_id );
break;
case 3:
display_puzzle ( current_sudoku ); //εμφάνιση τρέχοντος sudoku
break;
case 4:
play ( current_sudoku ); // παιχνίδι τρέχοντος sudoku
break;
case 5:
printf( "enter a file name to save\n" );
scanf( "%s", sudoku_save ); // εισαγωγή ονόματος αρχείου εξόδου
printf ( "\n\n" );
output = fopen ( sudoku_save, "w" );
if ( output == NULL ) // έλεγχος ανοίγματος αρχείου εξόδου
{
printf ( "cant open %s file,\nexit programm\n\n", sudoku_save );
system ( "pause" );
exit ( 1 );
}
// έλεγχος σφάλματος γραφής αρχείου, διακοπή προγράμματος
if ( !write_puzzle ( current_sudoku, output ) )
{
printf ( "cant write %s file,\nfile close and exit programm\n\n", sudoku_save );
fclose ( output );
system ( "pause" );
exit ( 1 );
}
// κλείσιμο αρχείου εξόδου
fclose ( output );
break;
case 6:
printf ( "\n" );
delete_sudoku ( &sudoku_list, ¤t_sudoku ); // διαγραφή τρέχοντος sudoku
break;
default:
if ( selection == 7 )
printf ( "thank you for playing, good bye!\n\n" );
else
printf ( "invalid choise\n\n" );
break;
}
}while ( selection != 7 );
delete_everythink ( &sudoku_list, ¤t_sudoku ); // διαγραφή ΟΛΟΚΛΗΡΗΣ της λίστας
system ( "pause" );
return 0; // τέλος προγράμματος
}