Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: amchacon en 26 Enero 2013, 11:19 am



Título: Error al comparar cadenas
Publicado por: amchacon en 26 Enero 2013, 11:19 am
Necesito comprobar si un determinado archivo es un rar, lo que hago es comprobar si tiene la firma que tiene todo archivo Rar: "Rar!"

Código
  1. bool Rar_File_Mising::ComprobarFormato()
  2. {
  3.    if (!Lectura.is_open())
  4.         throw Excepcion("No hay ningun fichero abierto",ARCHIVO_NO_ABIERTO);
  5.  
  6.    char* Leer = new char[4];
  7.  
  8.    Lectura.read(Leer,4);
  9.   // cout<<"Cosa:"<<Leer[0]<<Leer[1]<<Leer[2]<<Leer[3];
  10.  
  11.    if (strcmp(Leer,"Rar!") == 0)
  12.    {
  13.        delete[] Leer;
  14.  
  15.        return true;
  16.    }
  17.    else
  18.    {
  19.        delete[] Leer;
  20.  
  21.        return false;
  22.    }
  23. }

El problema esque cuando abro un archivo real. Siempre me lo detecta como falso, es como si no quisiera leer >_>


Título: Re: Error al comparar cadenas
Publicado por: amchacon en 26 Enero 2013, 15:28 pm
Solucionado, solo tenía que añadirle el caracter '\0' a la cadena para que stcmpr funcionase correctamente ^^