![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
02/12/2015, 11:29
|
![Avatar de Pedritogj11](http://static.forosdelweb.com/customavatars/avatar579844_1.gif) | | | Fecha de Ingreso: octubre-2015 Ubicación: Murcia
Mensajes: 6
Antigüedad: 9 años, 3 meses Puntos: 0 | |
Respuesta: ¿Por que se produce este buffer overflow? Cita:
Iniciado por eferion 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 originalchar 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
Si, en cambio, quieres leer únicamente un caracter, cambia el scanf por este otro: %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 :) |