• Miércoles 6 de Noviembre de 2024, 14:25

Autor Tema:  Leer de un fichero y generar otro fichero  (Leído 1674 veces)

LuisDa

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Leer de un fichero y generar otro fichero
« en: Domingo 1 de Marzo de 2009, 01:45 »
0
Buenas:

Para mi PFC necesito, entre otras cosas, leer varios ficheros *.txt, procesar la información contenida en ellos y generar un fichero *.xml con los resultados escritos en lenguaje XML.

Ya he visto cómo leer ficheros, pero, ¿sabe alguien cómo puedo hacer para crear un fichero? Sé que está la función tmpfile, en la que puedo crear el fichero y luego no hacer la llamada a fclose, dejando así ese fichero temporal sin cerrar. Me interesa eso, más que nada la estructura básica de creación de ficheros (y, por supuesto, escritura en ellos), para, partiendo de la misma, generarme yo mi código.

¿Alguna sugerencia mejor?

Gracias de antemano.

betopin

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
    • http://www.programasenc.blogspot.com
Re: Leer de un fichero y generar otro fichero
« Respuesta #1 en: Domingo 1 de Marzo de 2009, 17:33 »
0
Crear Archivo

Código: C
  1. FILE *archivo;
  2. archivo = fopen( "Nombre del archivo.extension", "w" ); // Si el archivo no existe lo crea....y si ya existia borra lo que hay
  3. .....
  4. .....                         // lineas de codigo
  5. ......
  6. fclose(archivo)
  7.  

Saludos

LuisDa

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: Leer de un fichero y generar otro fichero
« Respuesta #2 en: Domingo 1 de Marzo de 2009, 18:03 »
0
Gracias, pero ahora me durge otro problema:

He creado un programa de prueba, en un directorio del disco D (mi portátil tiene dos particiones, la C y la D), ese directorio tiene la ruta "D:Programas_C", he creado un fichero *.txt de prueba, llamado "prueba.txt" (incluido en ese directorio), y le he dado a leer el archivo de esta manera:

FILE *sistema;

...

if ((sistema=fopen("prueba.txt","r")) == NULL) {
    printf ("ERROR: No puedo abrir el archivo de datos");
    return 1;
}

El caso es que, estando el fichero prueba.txt incluido en ese directorio, me saca el error y no puede leerlo. ¿Qué estoy haciendo mal? He probado a poner también la ruta completa, D:Programas_Cprueba.txt y tampoco puede leer el fichero.

¿Cómo lo puedo solucionar? NOTA: Estoy trabajando con el Visual Studio, no con Linux.

Gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Leer de un fichero y generar otro fichero
« Respuesta #3 en: Lunes 2 de Marzo de 2009, 10:53 »
0
Hola LuisDa

Por favor, para el código usa las etiquetas de código.

Cita de: "LuisDa"
He probado a poner también la ruta completa, D:Programas_Cprueba.txt y tampoco puede leer el fichero.
Debes poner la ruta completa a menos que el fichero se encuentre en el mismo directorio que el ejecutable. ¿Podrías poner un ejemplo de cómo pones la ruta completa? ¿Estás seguro de que es "Programas_C" el directorio o lleva espacio? Si no, parece que tu código está bien, aunque:

Código: C
  1. if ((sistema=fopen("prueba.txt","r")) == NULL) {
  2.  
Evita este tipo de sentencias, sólo provocan errores y líos a la hora de encontrar los errores. Mejor así:

Código: C
  1. sistema=fopen("prueba.txt","r")
  2. if (sistema == NULL) {
  3.  
Además, utiliza nombres de variables entendibles. sistema no es un nombre adecuado para un fichero de texto. Por lo menos ponle fSistema, aunque fPrueba sería más adecuado.

Salud y ánimo  ^_^

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Leer de un fichero y generar otro fichero
« Respuesta #4 en: Lunes 2 de Marzo de 2009, 11:15 »
0
No te olvides de que para que un caracter sea  tenes que ponerlo dos veces, asi: \ (C:\Programas\etc) ya que la  sola se usa para los sequencias de escape (como n por ejemplo).

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.