Ayuda con manejo de char
Buenas tengo un problema a la hora de modificar el nombre de un tipo de dato char name[200] que se encuentra dentro de un array, es decir lista es de tipo struct cancion y esta posee un char name[200], autor, etc.
Todo esto esta programado en lenguaje C
Miren el codigo y vean como estoy modificando a ver si le encuentran una solución, muchas gracias por su tiempo...
void modificar_canciones()
{
int i, z, encontro, posicion;
char name[200], modifica, *S1, *S2;
printf("PRIMERO INGRESE EL NOMBRE DE LA CANCION QUE DESEA MODIFICARn");
scanf("%s",&name);
for (i=0; i<500; i++) //BUSCO SI ESA CANCION ESTA EN EL SISTEMA
{
if (lista[i].existe!=0)
{
S1=lista[i].name;
S2=name;
if ( strcmp(S1, S2) == 0 )
{
printf("CANCION ENCONTRADAn");
encontro=1;
posicion=i;
printf("n");
}
}
}
if (encontro!=1)
printf("NO EXISTEN CANCIONES POR ESE NOMBREnn");
if (encontro==1)
{
do
{
printf("Autor: %s Nombre: %s Genero: %s nn",lista[posicion].author, lista[posicion].name, lista[posicion].genre);
printf("QUE DESEA MODIFICAR? n");
printf("1.Modificar Nombre n");
printf("2.Modificar Autor n");
printf("3.Modificar Genero n");
printf("4.Regresar nn");
scanf("%d",&z);
if (z==1) //-------------------AKI COMIENZAN LOS ERRORES
{
/* QUIERO MODIFICAR EL NOMBRE DE LA CANCION QUE ESTA EN LISTA[POSICION].name POR
EL CHAR MODIFICA QUE ME DAN POR PANTALLA, IGUAL PARA AUTOR Y GENERO
LISTA[].name ES UN CHAR NAME[200] EN CASO DE QUE QUIERAS SABER */
printf("INDIQUE EL NUEVO NOMBRE DE LA CANCIONn");
scanf("%s",&modifica);
strcpy(lista[posicion].name, modifica); //AKI DA EL ERROR: PASSING ARG 2 OF STRCPY MAKES POINTER FROM INTEGER WITHOUT A CAST
//lista[posicion].name = modifica; //ERROR: INCOMPATIBLE TYPES IN ASSIGNMENT
//printf("%s",modifica);
}
if (z==2)
{
printf("INDIQUE EL NUEVO AUTOR DE LA CANCIONn");
scanf("%s",&modifica);
//lista[posicion].author = modifica; //ERROR
}
if (z==3)
{
printf("INDIQUE EL NUEVO GENERO DE LA CANCIONn");
scanf("%s",&modifica);
//lista[posicion].genre = modifica; //ERROR
}
}while(z!=4);
}
Todo esto esta programado en lenguaje C
Miren el codigo y vean como estoy modificando a ver si le encuentran una solución, muchas gracias por su tiempo...
void modificar_canciones()
{
int i, z, encontro, posicion;
char name[200], modifica, *S1, *S2;
printf("PRIMERO INGRESE EL NOMBRE DE LA CANCION QUE DESEA MODIFICARn");
scanf("%s",&name);
for (i=0; i<500; i++) //BUSCO SI ESA CANCION ESTA EN EL SISTEMA
{
if (lista[i].existe!=0)
{
S1=lista[i].name;
S2=name;
if ( strcmp(S1, S2) == 0 )
{
printf("CANCION ENCONTRADAn");
encontro=1;
posicion=i;
printf("n");
}
}
}
if (encontro!=1)
printf("NO EXISTEN CANCIONES POR ESE NOMBREnn");
if (encontro==1)
{
do
{
printf("Autor: %s Nombre: %s Genero: %s nn",lista[posicion].author, lista[posicion].name, lista[posicion].genre);
printf("QUE DESEA MODIFICAR? n");
printf("1.Modificar Nombre n");
printf("2.Modificar Autor n");
printf("3.Modificar Genero n");
printf("4.Regresar nn");
scanf("%d",&z);
if (z==1) //-------------------AKI COMIENZAN LOS ERRORES
{
/* QUIERO MODIFICAR EL NOMBRE DE LA CANCION QUE ESTA EN LISTA[POSICION].name POR
EL CHAR MODIFICA QUE ME DAN POR PANTALLA, IGUAL PARA AUTOR Y GENERO
LISTA[].name ES UN CHAR NAME[200] EN CASO DE QUE QUIERAS SABER */
printf("INDIQUE EL NUEVO NOMBRE DE LA CANCIONn");
scanf("%s",&modifica);
strcpy(lista[posicion].name, modifica); //AKI DA EL ERROR: PASSING ARG 2 OF STRCPY MAKES POINTER FROM INTEGER WITHOUT A CAST
//lista[posicion].name = modifica; //ERROR: INCOMPATIBLE TYPES IN ASSIGNMENT
//printf("%s",modifica);
}
if (z==2)
{
printf("INDIQUE EL NUEVO AUTOR DE LA CANCIONn");
scanf("%s",&modifica);
//lista[posicion].author = modifica; //ERROR
}
if (z==3)
{
printf("INDIQUE EL NUEVO GENERO DE LA CANCIONn");
scanf("%s",&modifica);
//lista[posicion].genre = modifica; //ERROR
}
}while(z!=4);
}
modifica es solo UN char ? si es asi solo estas almacenando el primer caracter,
otra cosa que vi es que, estas tratando de igualar un arreglo de char con UN char, osea un puntero a char con un char.
confunde un poco, porque no pones el codigo completo.
saludOS
otra cosa que vi es que, estas tratando de igualar un arreglo de char con UN char, osea un puntero a char con un char.
confunde un poco, porque no pones el codigo completo.
saludOS