SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: krnl64 en Lunes 25 de Mayo de 2009, 22:16

Título: corrupcion de pila leer caracter
Publicado por: krnl64 en Lunes 25 de Mayo de 2009, 22:16
Hola, quiero leer un carácter de entre una serie de caracteres permitidos con scanf.

Por qué me falla este code si le estoy diciendo que lea solo 1 caracter ?
Código: C
  1.  
  2.  
  3. unsigned char caracter=0;
  4.  
  5. scanf("%1[1234]",&caracter)
  6.  
  7.  

Gracias.
Título: Re: Fallo cadena de formato scanf
Publicado por: m0skit0 en Martes 26 de Mayo de 2009, 11:05
Porque no le has dicho que es un carácter  :lol:

Código: C
  1. /* No hace falta poner unsigned */
  2. char c;
  3. scanf("%c",&c);
  4.  
Título: Re: Fallo cadena de formato scanf
Publicado por: krnl64 en Martes 26 de Mayo de 2009, 16:28
Eso ya lo sabia y no es lo que queria.
Quiero que el usuario solo pueda introducir los caracteres del 1 al 4 nada más.
Como ésto:
Código: C
  1.  
  2. char buffer[50];
  3. scanf("%[1234]",buffer);
  4.  
  5.  
Eso solo dejara entrar en el buffer los numeros del 1 al 4.

Lo mismo pero para leer un caracter.
Título: Re: Fallo cadena de formato scanf
Publicado por: m0skit0 en Martes 26 de Mayo de 2009, 16:35
Cita de: "krnl64"
Eso ya lo sabia y no es lo que queria.
La próxima vez explícate mejor.  :hola:
Título: Re: Fallo cadena de formato scanf
Publicado por: krnl64 en Martes 26 de Mayo de 2009, 17:18
Vamos haber si esto se entiende.

Código: C
  1.  
  2. char buffer[50];
  3. scanf("%48[1234]",buffer);
  4.  
  5.  

Ese code me funciona perfecto. Almacenara en buffer 48 caracteres del 1 al 4  ignorando el resto que se teclee.

Pero en vez de eso, quiero leer un caracter permitiendo solo los numeros del 1 al 4 y almacenarlo en un unsigned char.

Código: C
  1.  
  2. unsigned char caracter=0;
  3. scanf("%1[1234]",&caracter)
  4.  
  5.  

Este código me corrompe la pila y quiero evitarlo.