Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/12/2015, 13:48
eferion
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 9 años, 6 meses
Puntos: 204
Respuesta: ¿Por que se produce este buffer overflow?

clave únicamente puede almacenar un char... no una cadena de caracteres.

Para almacenar cadenas de caracteres tienes que usar un array:

Código C:
Ver original
  1. char clave[200]; // Cambia 200 por la longitud máxima a almacenar más 1

Por otro lado, el contenido de una cadena de caracteres no se puede comprobar con el operador de igualdad porque es una operación compleja... para eso existe la función strcmp, que podrás encontrar en la librería string.h

Código C:
Ver original
  1. if( strcmp( clave, "P") == 0 ) // 0 representa una igualdad
  2. {
  3. }

Si, en cambio, quieres leer únicamente un caracter, cambia el scanf por este otro:

Código C:
Ver original
  1. scanf("%c",&clave);

%c indica que vas a leer únicamente un carácter.

El & hay que ponerlo porque la función espera un puntero... y clave, declarado tal que char clave; no lo es :)

Un saludo.
__________________
La ayuda se paga con esfuerzo o con dinero. Si no estás dispuesto a esforzarte y quieres que te hagan los deberes pide presupuesto, al menos así ahorrarás tiempo.