Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

¿Cómo podría unir 5 ficheros de texto en uno solo?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: ¿Cómo podría unir 5 ficheros de texto en uno solo? Responder citando

Hola foro, tengo 5 ficheros de texto y me gustaría unirlos en 1 sólo, o sea:

f1 + f2 + f3 + f4 + f5 = FicheroFinal

He intentado hacerlo de la siguiente forma,
cargar el primer fichero en un TMemo o en un TRichEdit y salvar línea por línea en otro fichero.

Limpiar el TMemo y cargar el siguiente fichero y volver así sucesivamente a repetir el proceso para todos.

Logro tener el único fichero con todos los datos pero me aparece un cuadradito delante de cada línea tanto si lo abro con Word como con otro editor de texto, no lo puedo abrir en el notepad porque el fichero final excede la capacidad del notepad, si el fichero no excede la capacidad no hay ningún problema.

Podría alguien decirme cómo podría unir los 5 ficheros en 1 sólo y que no me aparezcan carácteres raros en el fichero resultante.

AnsiString MyFiles[5] = {FilePath2,FilePath3,FilePath4,FilePath5,FilePath6};

for ( int p = 0; p<=4 ; p++) {
aux2 = MyFiles[p];
if (FileExists(aux2)){ // Miro si el fichero existe, si existe lo cargo, sino paso al siguiente fichero.
Memo1->Lines->LoadFromFile(aux2); // Cargarmos el fichero con extensión .itd (introducción), .exp (explicación), .des (descripciones), extensión .ipl (implicaciones), .con (conceptos Análogos)
cuentalineas = Memo1->Lines->Count;
if (cuentalineas > 0){ /* Si hay lineas para guardar */
for ( int h = 0; h<cuentalineas; h++){/* Escribe la línea en el fichero */
cadena = Memo1->Lines->Strings[h]+ "\n";
fwrite(cadena.c_str(), strlen(cadena.c_str()) +1, 1, stream);
}
}/* Si hay líneas para guardar */
Memo1->Lines->Clear();
}
}


Los ficheros que quiero unir no tiene ningún carácter raro.

Alguna idea de cómo podría hacerlo.

Gracias por leer el mensaje.

Volver arriba
Mensaje    Asunto: ¿Cómo podría unir 5 ficheros de texto en uno solo? Responder citando

Hola Alfonso:

Una manera de hacerlo:

code:

// Añadimos: #include <stdio.h>
FILE *fpIn, *fpOut;
if ((fpOut = fopen("c:\\fileout.txt", "wt")) == NULL)
throw Exception("No se pudo crear el archivo de salida.");
for (int i=1; i<=5; i++)
{
char linea[1024];
String sFileName = (String)"C:\\file" + i + ".txt";
if ((fpIn = fopen(sFileName.c_str(), "rt")) != NULL)
{
while (fgets(linea, sizeof(linea), fpIn))
fputs(linea, fpOut);
fclose(fpIn);
}
else
throw Exception((String)"No se pudo abrir: " + sFileName);
}
fclose(fpOut);

y otra manera de hacerlo:

code:

// Añadimos: #include <fstream>
// En algunas versiones de BCB tenemos que quitar todos los std::
std::ofstream ofs("c:\\fileout.txt");
if (!ofs.is_open())
throw Exception("No se pudo crear el archivo de salida.");
for (int i=1; i<=5; i++)
{
char linea[1024];
String sFileName = (String)"C:\\file" + i + ".txt";
std::ifstream ifs(sFileName.c_str());
if (ifs.is_open())
{
while (ifs.getline(linea, sizeof(linea)))
ofs << linea << std::endl;
ifs.close();
}
else
throw Exception((String)"No se pudo abrir: " + sFileName);
}
ofs.close();

---
Saludos.

Volver arriba
Mensaje    Asunto: ¿Cómo podría unir 5 ficheros de texto en uno solo? Responder citando

otra forma, prueba esto con un form y un boton
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *p[6];
for (int i=0;i<6;i++)
p[i]= new TStringList;
p[0]->LoadFromFile("f1.txt");
p[1]->LoadFromFile("f2.txt");
p[2]->LoadFromFile("f3.txt");
p[3]->LoadFromFile("f4.txt");
p[4]->LoadFromFile("f5.txt");
for (int i=0;i<5;i++)
p[5]->Text=p[5]->Text+p[i]->Text;
p[5]->SaveToFile("ftotal.txt");

for (int i=0;i<6;i++)
delete p[i];


}

Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.