Autor
		 | 
		
			Tema: AYUDA PROGRAMA EN C:No detecta los tipo Char  (Leído 2,345 veces)
		 | 
	 
 
	
		
			
				
					
						
							Dayleap
							
								
								  Desconectado
								Mensajes: 20
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
 ; 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   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
								Mensajes: 1.603
								
								 
								
								
								
								
								 
							 
						 | 
						
							
							 
							
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
								Mensajes: 219
								
								 
								HardForo.com
								
								
								
								
								
								  
								 
							 
						 | 
						
							
							 
							
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     
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Ú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
								Mensajes: 20
								
								
								
								
								
								  
							 
						 | 
						
							
							 
							
Muchas gracias , la funcion isdigit hacer que funcione  el codigo  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									En línea
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 |  
	 |  
 
	 
	
 
			 
			
				
					
						| Mensajes similares | 
					 
					
						 | 
						Asunto | 
						Iniciado por | 
						Respuestas | 
						Vistas | 
						Último mensaje | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Desbordamiento del tipo char
							 
							Programación C/C++
						 | 
						
							0xDani
						 | 
						
							5
						 | 
						
							3,653
						 | 
						
							 
							
								19 Octubre 2012, 15:51 pm 
								por 0xDani
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Pasar tipo const char* a char
							« 1 2 » 
							Programación C/C++
						 | 
						
							jorge_hura
						 | 
						
							15
						 | 
						
							12,738
						 | 
						
							 
							
								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
						 | 
						
							7,162
						 | 
						
							 
							
								27 Mayo 2015, 09:18 am 
								por Eternal Idol
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Ayuda con punteros de tipo char
							 
							Programación C/C++
						 | 
						
							bsantana
						 | 
						
							7
						 | 
						
							3,636
						 | 
						
							 
							
								10 Enero 2016, 23:51 pm 
								por bsantana
							
						 | 
					 
					
						
							 
						 | 
						
							 
						 | 
						
							Ayuda con subcadena de tipo char
							 
							Programación C/C++
						 | 
						
							Beginner Web
						 | 
						
							9
						 | 
						
							3,937
						 | 
						
							 
							
								 6 Julio 2018, 04:29 am 
								por engel lex
							
						 | 
					 
				 
			    |