una duda sobre strcmp()
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
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
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.
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.