[C++] Importar Remove(); [SOLUCIONADO]

Iniciado por DeMoNcRaZy, 17 Mayo 2015, 16:08 PM

0 Miembros y 1 Visitante están viendo este tema.

DeMoNcRaZy

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 (cpp) [Seleccionar]
#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>

using namespace std;

#include "crear.h"
#include "buscar.h"

int main(){

char opcion;

cout << "Introduzca la opcion: ";
cin >> opcion;

switch(opcion){
case '1':
crear();
break;
case '2':
   buscar();
   break;
case '3':
remove( "archivos/juan.txt" );
break;
   
default:
cout << "Default" << endl;
}

cin.get();
return 0;
}


buscar.h (header)

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

Código (cpp) [Seleccionar]
void buscar(){
string str;
string buscarNombre;
string hacerOpcion;
string nombreDos;
string empresaDos;
string edadDos;

cout << "Introduce el nombre a buscar: ";
cin >> buscarNombre;

const char *datname; // No podemos modificar el valor

buscarNombre = "archivos/" + buscarNombre + ".txt"; // Asignamos un valor a la variable

datname = buscarNombre.c_str(); // c_str devuelve un const char*

ifstream fe(datname);

if(fe.good()){
// Se muestra el contenido
while(!fe.eof())
       {
           char c = fe.get();
           str += c;
       
   if(c == '\n') {
               cout << str;
               str = "";
           }
       }
       
       cout << "\nQue desea hacer?" << endl;
       cin >> hacerOpcion;
       
       if(hacerOpcion == "modificar"){
        cout << "Modificando archivo..." << endl;
       
        ofstream fe(datname);
       
        getline(cin, nombreDos);
        cout << "Nombre: ";
       getline(cin, nombreDos);

        cout << "Empresa: ";
       getline(cin, empresaDos);

       cout << "Edad: ";
       cin >> edadDos;
       
       nombreDos = "Nombre: " + nombreDos;
       empresaDos = "Empresa: " + empresaDos;
       edadDos = "Edad: " + edadDos;

       cin.ignore(2, '\n');
       
       fe.write(nombreDos.c_str(), nombreDos.size());
       fe << endl;
       fe << endl;
       fe.write(empresaDos.c_str(), empresaDos.size());
       fe << endl;
       fe << endl;
       fe << edadDos << endl;
           
       fe.close();
       }
       else if(hacerOpcion == "borrar"){
        remove( "archivos/juan.txt" );
       }
   else{
   cout << "Opcion no valida." << endl;
   }
   }
}


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

Saludos.
Esta página web no está disponible - Google Chrome

ivancea96

¿Y estás seguro de que se llega a llamar a esa función?

DeMoNcRaZy

Cita de: ivancea96 en 17 Mayo 2015, 16:10 PM
¿Y estás seguro de que se llega a llamar a esa función?

En el main.cpp

Código (cpp) [Seleccionar]
#include "buscar.h"

Los demás parámetros de la función funcionan correctamente menos la función remove();
Esta página web no está disponible - Google Chrome

DeMoNcRaZy

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 (cpp) [Seleccionar]
else if(hacerOpcion == "borrar"){
        remove( "archivos/juan.txt" );
        }



Código (cpp) [Seleccionar]
else if(hacerOpcion == "borrar"){
                        fe.close();
        remove( "archivos/juan.txt" );
        }


Saludos.
Esta página web no está disponible - Google Chrome