Jueves 14 de Noviembre de 2024, 04:14
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Puntero incompatible
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Puntero incompatible (Leído 1549 veces)
alonsonic
Nuevo Miembro
Mensajes: 5
Puntero incompatible
«
en:
Sábado 24 de Abril de 2010, 19:29 »
0
Primero q todo buenas es el primer post q hago y enserio q me enamore de esta comunidad desde el primer momento que entre se puede llegar a aprender mucho de esta forma enserio sigan con este increible trabajo por ahora estoy un poco novato pero espero aportar tambien a quien lo necesite.
mi problema es este tengo un codigo bastante sencillo
Código: C
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
struct
album
{
char
nombre
[
20
]
;
int
fecha
;
int
puntuacion
;
char
ilustracion
[
20
]
;
struct
album
*
next
;
}
;
typedef
struct
album _album
;
struct
artist
{
char
grupo
[
20
]
;
char
solista
[
20
]
;
int
validador
;
//para grupo o solista
_album
*
CDS
;
struct
artist
*
next
;
}
;
typedef
struct
artist _artist
;
_album
*
crearAlbums
(
)
{
_album
*
auxiliar
;
int
lanzamiento
;
int
puntuacion
;
char
nombreAlbum
[
20
]
;
auxiliar
=
malloc
(
sizeof
(
_album
)
)
;
printf
(
"Nombre del album para el artista"
)
;
scanf
(
"%s"
,
nombreAlbum
)
;
strcpy
(
auxiliar
->
nombre
,
nombreAlbum
)
;
printf
(
"Fecha de lanzamiento del album"
)
;
scanf
(
"%d"
,&
lanzamiento
)
;
auxiliar
->
fecha
=
lanzamiento
;
printf
(
"Puntuacion del album"
)
;
scanf
(
"%d"
,&
puntuacion
)
;
auxiliar
->
puntuacion
=
puntuacion
;
auxiliar
->
next
=
NULL
;
return
auxiliar
;
}
_artist
*
crearArtist
(
char
nombreArtista
[
20
]
,
int
validar
)
{
_artist
*
auxiliar
;
auxiliar
=
malloc
(
sizeof
(
_artist
)
)
;
if
(
validar
==
0
)
//1 para solista, 0 para grupo
{
strcpy
(
auxiliar
->
grupo
,
nombreArtista
)
;
strcpy
(
auxiliar
->
solista
,
""
)
;
}
else
{
strcpy
(
auxiliar
->
solista
,
nombreArtista
)
;
strcpy
(
auxiliar
->
grupo
,
""
)
;
}
auxiliar
->
CDS
=
crearAlbums
;
**********
ERROR
********
auxiliar
->
validador
=
validar
;
//innecesario estudiar luego comportamiento
auxiliar
->
next
=
NULL
;
return
auxiliar
;
}
_artist
*
insertarArtistaFinal
(
char
nombreArtista
[
20
]
,
int
validar
,
_artist
*
apuntador
)
{
_artist
*
auxiliar
=
apuntador
;
while
(
auxiliar
->
next
!=
NULL
)
{
auxiliar
=
auxiliar
->
next
;
}
auxiliar
->
next
=
crearArtist
(
nombreArtista
,
validar
)
;
return
apuntador
;
}
me tira un errorcito que dice q el puntero es incompatible en la linea 60 q seria la marcada con *****
nadie sabe que puede ser porq no puedo seguir mi proyecto si no logro entender porq me da ese error, a mi parecer esta bien porq la funcion devuelve un puntero tipo _album que seria el mismo tipo de puntero del campo CDS de artista, gracias!!!!
Tweet
Epa
Miembro MUY activo
Mensajes: 242
Nacionalidad:
Re: Puntero incompatible
«
Respuesta #1 en:
Domingo 25 de Abril de 2010, 01:22 »
0
Buenas.
No se si sera esto, pero te faltan los parentesis:
auxiliar->CDS=crearAlbums
()
;
Es raro igual que los malloc no te tiren error, malloc devuelve un puntero null, por lo que te conviene hace un cast, para evitar cualqueir inconveniente:
auxiliar=(_album*)malloc(sizeof(_album));
Espero que eso resuelva tu problema.
Saludos
The sweet smell of a great sorrow lies over the land.
alonsonic
Nuevo Miembro
Mensajes: 5
Re: Puntero incompatible
«
Respuesta #2 en:
Lunes 26 de Abril de 2010, 17:41 »
0
Gracias!!! epa! si era eso de los parentesis q tonteria, pero lo del malloc no me tira error nunca, porq sera? no entiendo eso de q te arroja un puntero null, sera q el mismo malloc identifica a que tipo de puntero se iguala? nunca le e espesificado eso como escribistes alli, si me explicas un poquito eso miercoles seria feliz, programador en crecimiento jejeje
Epa
Miembro MUY activo
Mensajes: 242
Nacionalidad:
Re: Puntero incompatible
«
Respuesta #3 en:
Lunes 26 de Abril de 2010, 19:26 »
0
Perdon, acabo de leer, y dije culquier cosa
No devuelve un puntero null (ya que no tendrias la direccion que necesitas), sino un puntero void, o sea sin tipo, el c en la mayoria de los casos hace conversiones implicitas en las asignaciones de diferentes tipos, pero conviene hacerlas explicitas en muchos casos por precaucion.
The sweet smell of a great sorrow lies over the land.
alonsonic
Nuevo Miembro
Mensajes: 5
Re: Puntero incompatible
«
Respuesta #4 en:
Lunes 26 de Abril de 2010, 19:29 »
0
ah ok perfecto ahora si entendi, enserio gracias epa! una tonteria q no me dejaba seguir el proyecto y no encontraba.
thanks!
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Puntero incompatible