#c
#c
Вопрос:
int yes_or_no (void) { //Funcion yes_or_no. Confirma si el usuario quiere salir del usuario despues de seleccionar la opcion "EXIT".
char opcion2;
fprintf (stdout ,"Has seleccionado "Exit".n");
fprintf (stdout ,"Are you sure you want to exit y/n?: n");
fscanf (stdin ," %c", amp;opcion2);
if ((opcion2 == 'y') || (opcion2 == 'Y'))
{
fprintf (stdout ,"Ha seleccionado "Si".n");
valor = 0;
return valor;
}
if ((opcion2 == 'n') || (opcion2 == 'N'))
{
fprintf (stdout ,"Ha seleccionado "No".n");
valor = 1;
return valor;
}
else
{
fprintf (stdout ,"No ha seleccionado una opcion validan");
valor = 1;
return valor;
}
}
int main()
{
char opcion;
char opcion2;
char * APLICACION;
char caracter;
char caracterhl;
int valor;
int Date;
char *Name;
char *mensaje;
int edad;
FILE *ficheromensaje;
fprintf (stdout ,"Introduce una cadena: n");
fscanf (stdin ,"%s", APLICACION);
fprintf (stdout ,"Introduce un caracter: n");
fscanf (stdin ," %c", amp;caracterhl);
fprintf (stdout ,"Introduce un segundo caracter: n");
fscanf (stdin ," %c", amp;caracter);
stripe (caracter);
headline (APLICACION ,caracterhl); //Imprime la carátula.
stripe (caracter);
do {
fprintf (stdout ,"R) Register for a patientn");
fprintf (stdout ,"S) Search for a patientn");
fprintf (stdout ,"D) Discharge a patientn");
fprintf (stdout ,"L) List patients by agen"); //Presenta el menú del programa.
fprintf (stdout ,"X) Exit the programn");
fprintf (stdout ,"Choose an optionn");
fscanf (stdin ," %c" ,amp;opcion);
switch (opcion) {
case 'R':
fprintf (stdout ,"R) Register for a patientn");
break;
case 'S':
fprintf (stdout ,"S) Search for a patientn");
break;
case 'D':
fprintf (stdout ,"D) Discharge a patientn");
break;
case 'L':
fprintf (stdout ,"L) List patients by agen");
break;
case 'X':
yes_or_no ();
if (valor = 0) {
break;
}
else {
valor = 1;
continue;
}
default:
fprintf (stdout ,"Opcion no validan");
break;
}
} while (yes_or_no() == 1);
return 0;
}
Программа запрашивает символ, если это X, он переходит в функцию yes_or_no, где он спрашивает пользователя, хочет ли он выйти, если ответ Y или y, он присваивает valor значение 0 и возвращает эту переменную, и если ответ N или n или что-то ещеполностью он присваивает valor значение 1 и возвращает переменную. Затем, если значение valor равно 0, программа должна завершиться на этом, а если значение равно 1, она должна вернуться в меню (прямо перед функцией переключения), но программа не завершается, независимо от ответа yes_or_no
функции.
Ответ №1:
Сначала вам нужно объявить valor внутри функции int valor;
. После этого ваша функция возвращает целое число, но в вашем основном вы не присваиваете никакой переменной для хранения значения return , тогда вы должны do valor = yes_or_no();
, и в условии do-while также используйте переменную valor
Ответ №2:
как сказал @Hss, вы должны объявить переменную valor в функции.
В этой части вашего кода вы должны изменить условие в «ЕСЛИ». измените это -> if (valor = 0)
в этом -> if (valor == 0)
…
case 'X':
yes_or_no ();
if (valor == 0) {
break;
}
else {
valor = 1;
continue;
}