Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: winroot en 9 Octubre 2010, 16:38 pm



Título: Problema con argv
Publicado por: winroot en 9 Octubre 2010, 16:38 pm
Buenas!
Creo que algo de código vale mas que mil palabras :xD
Código
  1. #include<iostream>
  2. #include<stdlib>
  3. using namespace std;
  4. int main(int argc,char* argv[])
  5. {
  6. if(argv[1]=="hola") cout <<"Es hola" <<endl;
  7. else cout <<"No es hola" <<endl;
  8. cin.get();
  9. return 0;
  10. }
  11.  
a.exe hola
Salida:
No es hola
Bien, se supone que, si argv[1]=="hola" salida: es hola.
Pero...¿Porqué esto no es así?
Me di cuenta de esto cuando traté de escribir un programa muy simple que use la api de windows RegQueryInfoKey, que mostrara la última escritura hecha en una key que se le pasara como parámetro.
La idea era tener una variable gloval root del tipo HKEY,Y según aargv[1] fuera hklm,hkcu..., asignar a la variable root HKEY_LOCAL_MACHINE,etc.
Luego usaría la función RegOpenKeyEx, para abrir el árvol que esté en root, seguido de la key pasada en argv[2].
Bueno, gracias por leer y abrazo.


Título: Re: Problema con argv
Publicado por: Littlehorse en 9 Octubre 2010, 17:10 pm
Las cadenas no se comparan de esa manera.

strncmp (http://www.cplusplus.com/reference/clibrary/cstring/strncmp/)

Saludos


Título: Re: Problema con argv
Publicado por: winroot en 9 Octubre 2010, 17:52 pm
Muchas gracias !
abrazo