• Lunes 16 de Diciembre de 2024, 00:10

Autor Tema:  corrupcion de pila leer caracter  (Leído 1191 veces)

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
corrupcion de pila leer caracter
« en: Lunes 25 de Mayo de 2009, 22:16 »
0
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.
« última modificación: Martes 26 de Mayo de 2009, 17:45 por krnl64 »

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Fallo cadena de formato scanf
« Respuesta #1 en: Martes 26 de Mayo de 2009, 11:05 »
0
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.  

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Fallo cadena de formato scanf
« Respuesta #2 en: Martes 26 de Mayo de 2009, 16:28 »
0
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.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Fallo cadena de formato scanf
« Respuesta #3 en: Martes 26 de Mayo de 2009, 16:35 »
0
Cita de: "krnl64"
Eso ya lo sabia y no es lo que queria.
La próxima vez explícate mejor.  :hola:

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Fallo cadena de formato scanf
« Respuesta #4 en: Martes 26 de Mayo de 2009, 17:18 »
0
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.