una duda sobre strcmp()

pedro sevilla
02 de Julio del 2006
Hola, mi consulta es para saber como puedo aplicar esta funcion para comparar dos cadenas de caracteres, pero una de ellas esta en una tabla de cadenas de caracteres, podria ser asi???es q me parece q esta mal esto q hago:

int buscalinea(char tabcad[MAXTAM][MAXCAR],int nescritas,char cadena[MAXCAR]){
int i,j,enc=0,res,h;
for(i=0;i<nescritas&&!enc;i++){
res=strcmp(tabcad[i],cadena);//es posible hacerlo asi???
printf("REsultado %d",res);
if(res==0){
enc=1;
printf("Se ha encontrado una cadena igual");
return i;
}else
return -1;
}
}

esta funcion es para comprar las dos cadenas de caracteres, pero al compilar siempre devuelve -1, pero deberia devolverme un 0 la comparacion, ya que escribo dos cadenas identicas. GRACIAS

Ronald Miranda
02 de Julio del 2006
Hola, la idea esta bien, lo que ocurre es que cuando tu haces tabcad[0] (por ejm), esta variable te guarda toda la matriz, graficamente:

tu matriz:

hola
jota
tota

la cadena a comparar es hola

cuando tu haces tabla[0], lo que guarda esta variable es
holajotatota, lo cual no es igual a hola.

si haces tabla[1], lo que guarda es jotatota(vas captando la idea?).

Lo que debes hacer es crear una cadena temporal, por ejm un char temp[4](para el ejemplo), y haces:

strcpy(temp, tabla[0]); /*aqui se copiaria lo mismo, es decir holajotatota*/

temp[4]=0; /*con esto indicas que en la posicion 3 la cadena termina, quedando asi:

posicion 0 1 2 3 4 ....
caracter h o l a 0 o t a t o t a

ahora tu temp tendra la cadena "hola"(acuerdate que las cadenas en C++ terminan en 0 o el caracter '')

ahora si puedes comparar.

Saludos.

pedro sevilla
02 de Julio del 2006
Hola amigo!!me has solucionado la duda, gracias ya funciona perfecto el programa!!thanx