no me devuelve correctamente el valor y pues pase lo que pase el programa de acaba al instante
bool adios(bool s){
printf("Desea salir? [y/n]\n");
char k;
scanf("%s",&k);
if(k=='y'){
printf("Hasta otra!\n");
return false;
}else{
return true;
}
}
Dos fallos:
El argumento s no sirve para nada, nunca lo usas. Bórralo.
Para conseguir un caracter es %c. %s es para conseguir una cadena.
Okey, se ha quedado asi:
bool adios(){
printf("Desea salir? [y/n]\n");
char k;
scanf("%c",&k);
if(k=='y'){
printf("Hasta otra!\n");
return false;
}else{
return true;
}
}
Aun asi sigue fallando, ahora no me pide y o n y sigue con el programa.
Pues el error fatal es que la funcion es solo para devolver un valor... aunque tambien se puede modificar valores pasados por referencia o mostrar mensajes como en tu caso, pero ya no respetaria lo que es una función :silbar:
bool adios(){
char respuesta;
cout<<"Desea continuar? S/N: ";cin>>respuesta;
if(respuesta=='S' || respuesta=='s')
return true;
else
return false;
}
Seguro que has hecho una entrada por teclado antes. En ese caso se ha quedo '\n' dentro del buffer stdin y debes eliminarlo.
Cada vez que leas del teclado, por normal general, debes incluir un
while(getchar()!='\n');
eso vaciará el buffer hasta después de un carácter de nueva línea.
Digo por norma general porque fgets, gets, etc. sí adquieren el '\n' y la anterior sentencia creará una pausa.