Linux en Espanol Espontaneas - De tu ojo a la web
 
Acerca de variable tipo bool y una declaracion de cadena (tema #20864)
Publicar nuevo tema   Responder al tema    Foros de discusión -> Programación
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Bichissimo
Forista


Registrado: 18 Oct 2006
Mensajes: 231
Ubicación: La otra dimension!!!

MensajePublicado: Jue Abr 24, 2008 3:36 am    Asunto: Acerca de variable tipo bool y una declaracion de cadena Responder citando

Hola a todos

Pues eso Rolling Eyes ¿el compilador gcc admite variables "bool"? al tratar de compilar un programa en C me sale con

"error: 'bool' undeclared (first use in this function)"

Y acerca de mi otra duda, la declaracion de una cadena normalmente se hace con un:

Código:
char nombredelacadena[tamaño]


pero tambien se puede con un:

Código:
char *nombredelacadena


sin embargo al querer meter un dato a esa cadena con un "gets" me sale "Segmentation fault" ¿A que se debera esto?

Saludos.
_________________
.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
l.juan
Forista


Registrado: 03 Jul 2004
Mensajes: 507
Ubicación: México, D.F.

MensajePublicado: Jue Abr 24, 2008 7:40 am    Asunto: Responder citando

El tipo de datos booleano se introduce hasta C99 el cual define la librería: stdbool.h

Y un arreglo de char es diferente a un apuntador a char. En uno, la memoria se reserva desde que se ejecuta esa línea (arreglo) y con el apuntador, tu tienes que reservar la cantidad de memoria manualmente. (malloc y familia).
_________________
"La televisión me respeta, se ríe con migo, y no de mí"
Homero J. Simpson
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor
Bichissimo
Forista


Registrado: 18 Oct 2006
Mensajes: 231
Ubicación: La otra dimension!!!

MensajePublicado: Vie Abr 25, 2008 2:54 am    Asunto: Responder citando

Hola I.juan:

Gracias por aclararme lo de las variables bool, sin embargo no me quedo claro lo del apuntador a la cadena, tengo entendido que al hacer "[longitud]" en una cadena es porque sabes la longitud de la misma, pero en el caso de que no la sepa me dijeron que se podria hacer con un apuntador para que pueda ocupar una longitud que yo quiera, lamentablemente en clase programamos con visual basic y pues, alli se puede declarar y escribir en la cadena asi, con un apuntador, en linux no hay problema con la declaracion sino que no puedo meter datos.

Saludos.
_________________
.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
demasiadovivo
Forista


Registrado: 25 May 2005
Mensajes: 1051
Ubicación: secret place

MensajePublicado: Vie Abr 25, 2008 3:51 am    Asunto: Responder citando

Primero te queria comentar que no deberias usar gets, en el mismo manual de gets dice:
Cita:
No use nunca gets(). Puesto que es imposible saber, sin conocer de antemano los datos, cuántos caracteres va a leer gets(), y
puesto que gets() continuará guardando caracteres una vez alcanzado el final del búfer, su empleo es extremadamente peligroso.
Muchas veces ha sido utilizado para comprometer la seguridad de un sistema. En su lugar emplee fgets() siempre que pueda.

Ahora, sobre la declaracion, el problema que tenes es q estas declarando un puntero a una cadena y no una cadena. Lo que hace gets es guardar lo leido en stdin en el buffer apuntado por nombredelacadena, pero si nombredelacadena no esta apuntando a ningun buffer tenes un error entre manos. Cuando declaras un puntero a algo, este apunta a un lugar indeterminado, muy probablemente apuntando a un area de memoria que no corresponde al usuario, entonces al asignarle algo te da segmentation fault.

Lo que deberias hacer es crear un buffer antes de usar la llamada a gets. Esto lo podes hacer (como dijo I.juan) con malloc.
_________________
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Bichissimo
Forista


Registrado: 18 Oct 2006
Mensajes: 231
Ubicación: La otra dimension!!!

MensajePublicado: Sab Abr 26, 2008 7:07 am    Asunto: Responder citando

entendido demasiadovivo!! Very Happy gracias por la explicacion, ahora me toca investigar acerca de fgets y malloc.

saludos.
_________________
.
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Publicar nuevo tema   Responder al tema    Foros de discusión -> Programación Todas las horas son GMT
Página 1 de 1

 
Cambiar a:  
Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro




La marca registrada Linux (R) se usa siguiendo la sublicensia obtenida del "Linux Mark Institute",
el LICENCIATARIO exclusivo de Linus Torvalds, propietario de la marca en EEUU y otros pai­ses
The registered trademark Linux (R) is used pursuant to a sublicense from the Linux Mark Institute,
the exclusive LICENSEE of Linus Torvalds, owner of the mark in the U.S. and other countries
Powered by phpBB © 2001, 2002 phpBB Group

POWERED BY ISANUMBER φ