Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con chars

Estas en el tema de Problema con chars en el foro de C/C++ en Foros del Web. Mmm... no conozco muy bien la sintaxis aun asi que no se que es lo que esta mal... y no se si estoy comparando bien ...
  #1 (permalink)  
Antiguo 07/12/2007, 14:37
 
Fecha de Ingreso: diciembre-2007
Mensajes: 2
Antigüedad: 17 años
Puntos: 0
Problema con chars

Mmm... no conozco muy bien la sintaxis aun asi que no se que es lo que esta mal... y no se si estoy comparando bien los char de un arreglo...
Bueno veran... tengo un arreglo que esta echo de estructuras... como veran:

struct datos{
char nombre;
char apellido;
char rut;
int monto;
int interes;
};
struct datos datobanco[10];

Yo en un momento pido al usuario que ingrese su rut (rutingresado) y con eso hago la siguiente funcion:

int ubicacion(struct datobanco[],int i, char rutingresado){
if ((strcmp (rutingresado, datobanco[i].rut)) == 0){
return i;
}
else{
return ubicacion (datobanco[],i+1,rutingresado);
}
}

Como pueden darse cuenta... quiero que la funcion me entregue la posicion en la cual se encuentra el rut dentro del arreglo de estructuras.. y esta echo a base de recursividad sin ciclos...

Pero no me funciona... me dice algo de invalid conversion from char to const char o algo asi... por favor si alguien me puede ayudar en la sintaxis o decirme que es lo que esta mal...

De antemano, gracias.
  #2 (permalink)  
Antiguo 07/12/2007, 14:45
Avatar de aloqui  
Fecha de Ingreso: diciembre-2007
Mensajes: 973
Antigüedad: 17 años, 1 mes
Puntos: 24
Re: Problema con chars

Protesta por la funcion strcmp() pues requiere que le pasen dos "punteros a char" y no dos "char" que es lo que le estas pasando.

SI realmente quieres comparar dos "char" pues lo haces directamente, no necesitas ninguna fun cion.

Es decir, en lugar de
Código:
 
  if ((strcmp (rutingresado, datobanco[i].rut)) == 0)
Debes usar:
Código:
 
  if  ( rutingresado == datobanco[i].rut )
  #3 (permalink)  
Antiguo 07/12/2007, 14:48
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 18 años, 7 meses
Puntos: 28
Re: Problema con chars

La función strcmp recibe como parámetros dos punteros a char, tu le estás pasando dos char, no se que es un rut, pero lo declaraste como un solo caracter, así que podrías hacer la comparación directamente:
Código:
...
if (rutingresado ==  datobanco[i].rut)
{
...
}
...
Ahora si el rut está formado por varios caracteres tienes que arreglar la declaración de la estructura (solo el rut), el parámetro en la función ubicacion y dejar el if como lo tienes.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:06.