Ver Mensaje Individual
  #3 (permalink)  
Antiguo 02/12/2015, 11:29
Avatar de Pedritogj11
Pedritogj11
 
Fecha de Ingreso: octubre-2015
Ubicación: Murcia
Mensajes: 6
Antigüedad: 8 años, 6 meses
Puntos: 0
Respuesta: ¿Por que se produce este buffer overflow?

Cita:
Iniciado por eferion Ver Mensaje
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.
Vale muchas gracias por la ayuda. Me gustaria que me dijeras porque en el array hay que indicar la longitud maxima MAS 1? Por que uno mas? Y la biblioteca stdio.h, ¿permite la programacion orientada a objetos o es solo para C y no para C++?
Un saludo :)