elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  AYUDA PROGRAMA EN C:No detecta los tipo Char
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: AYUDA PROGRAMA EN C:No detecta los tipo Char  (Leído 2,014 veces)
Dayleap

Desconectado Desconectado

Mensajes: 20


Ver Perfil
AYUDA PROGRAMA EN C:No detecta los tipo Char
« en: 6 Mayo 2016, 12:38 pm »

 ; esto forma parte de un programa mayor ; el porblema esta en que cuando lo ejecuto y le introduzco por teclado un valor tal que resp pasa a ser igual a ... por ejemplo '3f', es decir: resp[0]=3 resp[1]=f entonces me deberia de volver a pedir que escoja un nuevo nivel de dificultad pero no lo hace. Lo que hace es retornarme la parte entera del array y , si no tiene parte entera me devuelve un 0; LO QUE QUIERO QUE HAGA ES QUE SI INTRODUZCO UN CARACTER ME LO DETECTE Y ME DIGA QUE VUELVA A INTRODUCIR LA DIFICULTAD. MUCHAS GRACIAS  ;D
Código:
int main(){
  int control=0,n,i,dif;
  char resp[4];
printf("Nivel actual %i \n", dificultad);

do{
printf("Elige el nuevo nivel[1..100]: \n");
  fflush(stdin);
scanf(" %s",  &resp);
 
n=strlen(resp);          //COMPROBACIONES
  if(n<1||n>=4){control=1;}

for(i=0;i<n;i++){   //letras
if(resp[i]<'0'&& resp[i]>'9'){
control=2;}}
switch(control){
case 1:
printf("\nHas seleccionado un n\243mero no v\240lido\n\n");break;
case 2:
printf("El numero ha de contener solo digitos\n");break;
case 0:
dif=atoi(resp);
if(dif>=1&&dif<=100){
printf("\nHas establecido numero de intentos máximo como: %i \n\n", dif);control=0;}
else{printf("\nHas establecido un n\243mero no v\240lido\n\n");
control==1;
}
}
}while(control==3 || control==2 || control==1);
return 0;}


« Última modificación: 8 Mayo 2016, 14:28 pm por Dayleap » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: AYUDA PROGRAMA EN C:No detecta los tipo Char
« Respuesta #1 en: 6 Mayo 2016, 13:47 pm »

Bien, veo que lo has escrito deprisa y corriendo. Para otra vez formatea el código, se agradece verlo bien presentado.

Dentro del bucle do-while, pon la primera instrucción que lleve control a 0. Si hay algún fallo control empezará el bucle ya con código de error y no saldrás de él.

Para scanf, debes hacer que acepte un máximo de 4 caracteres, sino podrías crear desbordamiento de la variable resp. Sobre la variable resp, ella misma ya actúa como puntero y no debes pasarle la dirección de memoria.

No uses fflush(stdin) no es estándar y no va bien con todos los compiladores. Hay alternativas con funciones de librería y un poco de código.

resp<'0'&& resp>'9' puedes sustituirlo por la función de librería isdigit de ctype.h

En el 'case 0' has escrito, en su última instrucción control==1, una comparación sin efecto. Supongo que querías hacer una asignación.



En línea

HardForo

Desconectado Desconectado

Mensajes: 219


HardForo.com


Ver Perfil WWW
Re: AYUDA PROGRAMA EN C:No detecta los tipo Char
« Respuesta #2 en: 6 Mayo 2016, 14:24 pm »

Citar
resp<'0'&& resp>'9' puedes sustituirlo por la función de librería isdigit de ctype.h

Vale la pena cargar una libreria para eso ?  si la libreria usa macros, claro que si  ::)

Por ejemplo la libreria stdlib.h para poder usar EXIT_SUCCESS y/o EXIT_FAILURE usa de hecho macros asi que no hay ningun tipo de overhead en el programa.

Respuesta inspirada en @MAFUS  ;D
« Última modificación: 6 Mayo 2016, 14:36 pm por boctulus » En línea

HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *
Dayleap

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: AYUDA PROGRAMA EN C:No detecta los tipo Char
« Respuesta #3 en: 8 Mayo 2016, 14:27 pm »

Muchas gracias , la funcion isdigit hacer que funcione  el codigo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Desbordamiento del tipo char
Programación C/C++
0xDani 5 3,255 Último mensaje 19 Octubre 2012, 15:51 pm
por 0xDani
Pasar tipo const char* a char « 1 2 »
Programación C/C++
jorge_hura 15 11,486 Último mensaje 25 Julio 2013, 09:50 am
por Eternal Idol
(Ayuda) Programa crashea al analizar una cadena (char *) « 1 2 »
Programación C/C++
Seyro97 14 6,128 Último mensaje 27 Mayo 2015, 09:18 am
por Eternal Idol
Ayuda con punteros de tipo char
Programación C/C++
bsantana 7 3,181 Último mensaje 10 Enero 2016, 23:51 pm
por bsantana
Ayuda con subcadena de tipo char
Programación C/C++
Beginner Web 9 3,256 Último mensaje 6 Julio 2018, 04:29 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines