SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Perrero en Sábado 25 de Noviembre de 2006, 15:16

Título: Un Dudan Con Comparacion De Cadenas
Publicado por: Perrero en Sábado 25 de Noviembre de 2006, 15:16
Buenas, tengo una duda y espero que me puedan ayudar.

Cuando inserto una cadena en una variable, por ejemplo nom="texto" y utilizo la funcion

strcmp(nom,"texto");

para saber si son iguales, me dice que si. Pero si ingreso un texto y lo comparo de la siguiente manera:

nom=="texto"

Me dice que es falso, a que se debe esto, supuestamente no deben de botar lo mismo?, osea el ultimo no debe salir tbm verdadero.  :hola:
Título: Re: Un Dudan Con Comparacion De Cadenas
Publicado por: Eternal Idol en Sábado 25 de Noviembre de 2006, 15:55
No, ese == compara que apunten a la misma direccion y strcmp compara que los caracteres sean los mismos.
Título: Re: Un Dudan Con Comparacion De Cadenas
Publicado por: AnioN en Sábado 25 de Noviembre de 2006, 17:29
primero y principal no podes insertar un string en una variable, vas a necesitar un vector.
Título: Re: Un Dudan Con Comparacion De Cadenas
Publicado por: Eternal Idol en Sábado 25 de Noviembre de 2006, 17:39
Cita de: "AnioN"
primero y principal no podes insertar un string en una variable, vas a necesitar un vector.
Si la variable es char * eso funciona perfectamente, es una simple asignacion de la direccion de memoria que ocupa la cadena en la seccion de datos (.rdata seguramente) y los vectores no tienen nada que hacer mientras no haya ningun "conjunto" de cadenas como en este caso.
Título: Re: Un Dudan Con Comparacion De Cadenas
Publicado por: _aioros_ en Viernes 1 de Diciembre de 2006, 17:34
Cita de: ""Perrero""
para saber si son iguales, me dice que si. Pero si ingreso un texto y lo comparo de la siguiente manera:

nom=="texto"

Me dice que es falso, a que se debe esto, supuestamente no deben de botar lo mismo?, osea el ultimo no debe salir tbm verdadero
Creo que te sale falso, porque las cadenas solo se pueden comparar con la funcion que pusiste antes "strcmp", lo que haces en esta parte [nom=="texto"] es que estas comparando el valor pero en ascii de cada letra y  por eso tu resultado es flaso.
si estoy mal diganme no soy muy bueno  :lol:  :P
Título: Re: Un Dudan Con Comparacion De Cadenas
Publicado por: JuanK en Viernes 1 de Diciembre de 2006, 17:40
Cita de: "_aioros_"
lo que haces en esta parte [nom=="texto"] es que estas comparando el valor pero en ascii de cada letra y  por eso tu resultado es flaso.
si estoy mal diganme no soy muy bueno  :lol:  :P
estas mal.. sale falso porque esta comparando dos apuntadores, es decir estas comparando las dos direcciones de memoria, no su contenido.
Título: Re: Un Dudan Con Comparacion De Cadenas
Publicado por: _aioros_ en Viernes 1 de Diciembre de 2006, 17:47
Cita de: ""JuanK""
estas mal.. sale falso porque esta comparando dos apuntadores, es decir estas comparando las dos direcciones de memoria, no su contenido.
Gracias por corregirme amigo :D de los errores se aprende <_< , espero que con esto quede resuelto el problema de Perrero
Título: Re: Un Dudan Con Comparacion De Cadenas
Publicado por: Eternal Idol en Viernes 1 de Diciembre de 2006, 17:58
¿Con eso quedo resulto? ¿De verdad? Entonces no se para que me moleste en escribir la primera respueta de este hilo ...
Título: Re: Un Dudan Con Comparacion De Cadenas
Publicado por: Bicholey en Sábado 2 de Diciembre de 2006, 12:16
:P

Quiza esto ayude:

Código: Text
  1.  
  2.  #include &#60;string.h&#62;
  3.  #include &#60;stdio.h&#62;
  4.  
  5. int main(void)
  6.  {
  7.     char *buf1 = &#34;aaa&#34;, *buf2 = &#34;bbb&#34;, *buf3 = &#34;ccc&#34;;
  8.     int ptr;
  9.  
  10.     ptr = strcmp(buf2, buf1);
  11.     if (ptr &#62; 0)
  12.        printf(&#34;buffer 2 is greater than buffer 1&#092;n&#34;);
  13.     else
  14.        printf(&#34;buffer 2 is less than buffer 1&#092;n&#34;);
  15.  
  16.     ptr = strcmp(buf2, buf3);
  17.     if (ptr &#62; 0)
  18.        printf(&#34;buffer 2 is greater than buffer 3&#092;n&#34;);
  19.     else
  20.        printf(&#34;buffer 2 is less than buffer 3&#092;n&#34;);
  21.  
  22.     return 0;
  23.  }
  24.  
  25.  
Título: Re: Un Dudan Con Comparacion De Cadenas
Publicado por: Mollense en Sábado 2 de Diciembre de 2006, 16:03
...y con eso queda resuelto  :P
Título: Re: Un Dudan Con Comparacion De Cadenas
Publicado por: Eternal Idol en Sábado 2 de Diciembre de 2006, 17:15
Efectivamente, ahi tenemos la resolucion a un problema ... vaya a saber quien lo tiene, eso es otra historia.