Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/05/2010, 13:00
osaeroon
 
Fecha de Ingreso: abril-2010
Mensajes: 10
Antigüedad: 14 años, 1 mes
Puntos: 1
Como guardar archivo

Buenas, mi problema es el siguiente:
Pretendo hacer un programa que me guarde un fichero de texto, que previamente ha sido modificado, en una url elegida por el usuario.

Se me ha ocurrido utilizar la función savefiledialog para mostrar el cuadro de diálogo y obtener el path donde el usuario quiere guardar. Entonces creo ahí un archivo de texto vacío, copio el contenido del archivo modificado en éste vacío y luego elimino el primer archivo. No obstante, el problema está en que la función fopen para abrir el archivo vacio recien creado no reconoce el parámetro que le paso como dirección. Lo depura bien, pero al correrlo me da error. Podría tener algo que ver con la conversión que hago con la url de String^ a char*?

A continuación os expongo parte del código:

char* procedencia="C:\\prueba 2.txt";

bool ok;

SaveFileDialog^guardar=gcnew SaveFileDialog();
guardar->Filter="TextFiles|*.txt";
guardar->ShowDialog();

if(guardar->FileName != "")
{

System::IO::FileStream ^ fs = safe_cast<System::IO::FileStream^>(guardar->OpenFile());
String^DireccionGuardar=guardar->FileName;

//Para pasar de String^ a char*
int len=((DireccionGuardar->Length+1) * 2);
char *pasar = new char[ len ];
pin_ptr<const wchar_t> wch = PtrToStringChars(DireccionGuardar);
ok= wcstombs( pasar, wch, len );



//Copio un archivo en otro
char letra;
FILE *origen;
FILE *destino;

origen = fopen(procedencia,"r");
destino = fopen(pasar,"w");<-AQUI ESTÁ EL ERROR

letra=fgetc(origen);
while (letra!=EOF)
{
fputc(letra,destino);
letra=fgetc(origen);
}
fclose (origen);
fclose (destino);
}

Gracias por las respuestas

Última edición por osaeroon; 08/05/2010 a las 05:28