Δημοσιεύτηκε: 15 Νοέμ 2011, 12:51
Το παρακάτω πρόγραμμα με το DEV-C++ κρασάρει, ενώ με το CODE:BLOCKS, όχι.
Μήπως το πρόγραμμα δεν είναι σωστό, ή παίζει κάτι άλλο? Γιατί συμβαίνει αυτό? Αυτό που θέλω να κάνει αρχικά είναι να δέχεται μόνο ένα, συγκεκριμένο, χαρακτήρα από το χρήστη και μέσω της choice να κάνει διάφορες ενέργειες.
Τον παραθέτω.
Μήπως το πρόγραμμα δεν είναι σωστό, ή παίζει κάτι άλλο? Γιατί συμβαίνει αυτό? Αυτό που θέλω να κάνει αρχικά είναι να δέχεται μόνο ένα, συγκεκριμένο, χαρακτήρα από το χρήστη και μέσω της choice να κάνει διάφορες ενέργειες.
Τον παραθέτω.
- Κώδικας: Επιλογή όλων
#include <stdio.h>
#include <string.h>
#define LENGTH 100+1
int get_menu_choice (void);
int main()
{
char choice = 0, t = 0;
while (1)
{
//Κλήση της συνάρτησης get_menu_choice για την εμφάνιση του main menu
choice = get_menu_choice();
while ((t = getchar()) != '\n');
{
switch (choice)
{
case 'N':
puts("You entered a valid choice.");
break;
case 'S':
puts("You entered a valid choice.");
break;
case 'U':
puts("You entered a valid choice.");
break;
case 'E':
return 0;
default:
puts("INVALID ENTRY\n");
}
}
}
}
// Δήλωση της συνάρτησης για την εμφάνιση του main menu
int get_menu_choice (void)
{
char selection[] = {'0'};
char line[] = {'0'};
int count = 0;
do
{
puts ("\nMAIN MENU\n");
puts ("\n[N] Start New Game\n");
puts ("\n[S] Score\n");
puts ("\n[U] Undo\n");
puts ("\n[E] End Program\n");
printf ("\nSelection [N, S, U, E]:");
fgets( selection, LENGTH, stdin );
sscanf( selection, "%s", line );
count = strlen (line);
if( count != 1 )
puts("\nInvalid entry,you can enter only N,S,U,E.\n");
}
while( count > 1 );
system("pause");
return line[0];
}