Ayuda con manejo de char

Erick Pombo
14 de Marzo del 2010
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);
}

skilltik
14 de Marzo del 2010
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



visual c
22 de Julio del 2010
olle lo que pasa es que si estas trabajando en visual c++
la funcioon strcpy no funciona....

lo que te toca seria hacer dos estructuras una de modificacion y otra inicial...
pra que cuando el diga que desa modificar buscas la cancion pero lo guardas en la otra....