Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: DeMoNcRaZy en 17 Mayo 2015, 16:08 pm



Título: [C++] Importar Remove(); [SOLUCIONADO]
Publicado por: DeMoNcRaZy en 17 Mayo 2015, 16:08 pm
Buenas,

Tengo un pequeño problema que no se donde falla, osea todo va bien sin fallos ni nada...
tengo en un header una función en la que se ejecuta la función remove(); pero desde el header no funciona, sin embargo la pongo en el main y funciona correctamente.

Creo que es por el return, intento poner return en el header pero me salta error.

Aquí el código:

main.cpp

Aquí remove(); funciona perfectamente.

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <cstdio>
  5.  
  6. using namespace std;
  7.  
  8. #include "crear.h"
  9. #include "buscar.h"
  10.  
  11. int main(){
  12.  
  13. char opcion;
  14.  
  15. cout << "Introduzca la opcion: ";
  16. cin >> opcion;
  17.  
  18. switch(opcion){
  19. case '1':
  20. crear();
  21. break;
  22. case '2':
  23.    buscar();
  24.    break;
  25. case '3':
  26. remove( "archivos/juan.txt" );
  27. break;
  28.  
  29. default:
  30. cout << "Default" << endl;
  31. }
  32.  
  33. cin.get();
  34. return 0;
  35. }

buscar.h (header)

Aquí no me da ningún error ni nada, pero no borra el archivo.

Código
  1. void buscar(){
  2. string str;
  3. string buscarNombre;
  4. string hacerOpcion;
  5. string nombreDos;
  6. string empresaDos;
  7. string edadDos;
  8.  
  9. cout << "Introduce el nombre a buscar: ";
  10. cin >> buscarNombre;
  11.  
  12. const char *datname; // No podemos modificar el valor
  13.  
  14. buscarNombre = "archivos/" + buscarNombre + ".txt"; // Asignamos un valor a la variable
  15.  
  16. datname = buscarNombre.c_str(); // c_str devuelve un const char*
  17.  
  18. ifstream fe(datname);
  19.  
  20. if(fe.good()){
  21. // Se muestra el contenido
  22. while(!fe.eof())
  23.        {
  24.            char c = fe.get();
  25.            str += c;
  26.  
  27.    if(c == '\n') {
  28.                cout << str;
  29.                str = "";
  30.            }
  31.        }
  32.  
  33.        cout << "\nQue desea hacer?" << endl;
  34.        cin >> hacerOpcion;
  35.  
  36.        if(hacerOpcion == "modificar"){
  37.         cout << "Modificando archivo..." << endl;
  38.  
  39.         ofstream fe(datname);
  40.  
  41.         getline(cin, nombreDos);
  42.         cout << "Nombre: ";
  43.        getline(cin, nombreDos);
  44.  
  45.         cout << "Empresa: ";
  46.        getline(cin, empresaDos);
  47.  
  48.        cout << "Edad: ";
  49.        cin >> edadDos;
  50.  
  51.        nombreDos = "Nombre: " + nombreDos;
  52.        empresaDos = "Empresa: " + empresaDos;
  53.        edadDos = "Edad: " + edadDos;
  54.  
  55.        cin.ignore(2, '\n');
  56.  
  57.        fe.write(nombreDos.c_str(), nombreDos.size());
  58.        fe << endl;
  59.        fe << endl;
  60.        fe.write(empresaDos.c_str(), empresaDos.size());
  61.        fe << endl;
  62.        fe << endl;
  63.        fe << edadDos << endl;
  64.  
  65.        fe.close();
  66.        }
  67.        else if(hacerOpcion == "borrar"){
  68.         remove( "archivos/juan.txt" );
  69.        }
  70.    else{
  71.    cout << "Opcion no valida." << endl;
  72.    }
  73.    }
  74. }

Agradecería que me pudieran comentar a que se debe dicho error.

Saludos.


Título: Re: [C++] Importar Remove();
Publicado por: ivancea96 en 17 Mayo 2015, 16:10 pm
¿Y estás seguro de que se llega a llamar a esa función?


Título: Re: [C++] Importar Remove();
Publicado por: DeMoNcRaZy en 17 Mayo 2015, 16:21 pm
¿Y estás seguro de que se llega a llamar a esa función?

En el main.cpp

Código
  1. #include "buscar.h"

Los demás parámetros de la función funcionan correctamente menos la función remove();


Título: Re: [C++] Importar Remove();
Publicado por: DeMoNcRaZy en 17 Mayo 2015, 17:56 pm
Problema resulto,

Al final el error de debía a que me denegaba la función por tener el archivo abierto.
Al igual que cuando estás editando un archivo con notepad++ y lo quieres borrar y te salta un mensaje de alerta denegandote que no se puede borrar es lo que me pasaba, tenía el archivo abierto y no me dejaba.

He cerrado el archivo y ya todo funciona correctamente.

Gracias y disculpen las molestias.

Código
  1. else if(hacerOpcion == "borrar"){
  2.         remove( "archivos/juan.txt" );
  3.        }


Código
  1. else if(hacerOpcion == "borrar"){
  2.                        fe.close();
  3.         remove( "archivos/juan.txt" );
  4.        }

Saludos.