Ficheros de texto (int argc, char *argv)

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
Anon
Mensajes: 15
Registrado: 07/03/2013 12:00 pm

Ficheros de texto (int argc, char *argv)

#1 Mensaje por Anon » 16/05/2013 8:21 am

Código: Seleccionar todo

#include <stdio.h>
#define MAXLONGLINEA 256

int main (int argc, char *argv)
{
  FILE  *pforigen;
  FILE  *pfdestino;
  char linea[MAXLONGLINEA];
  
if (argc == 3)
{
  pforigen = fopen("archivo_1.txt","r");
//si pongo argv[1], en lugar de archivo_1.txt, me da error.
  if ( pforigen == NULL )
     {
		puts("Error al abrir el fichero de lectura");
		return 1;
     }

  pfdestino = fopen("archivo_2.txt","w"); 
//si pongo argv[2], en lugar de archivo_2.txt, me da error.
  if ( pfdestino == NULL )
     {
		puts("Error al abrir el fichero de lectura");
		return 1;
     }

	while (fgets(linea,MAXLONGLINEA,pforigen) != NULL )
     {
     fputs(linea,pfdestino);
     }
  }
  
  fclose(pforigen);
  fclose(pfdestino);
  return 0;
}
Con ésto, consigo copiar el contenido del archivo 1 al archivo 2.

Si compilamos y ejecutamos:
gcc ejercicio -o copy
./copy <parametro_1> <parametro_2>

¿Cómo puedo hacer que se copie el contenido de archivo_2.txt a archivo_1.txt?, ejecutandolo:
./copy achivo_2.txt archivo_1.txt

Anon
Mensajes: 15
Registrado: 07/03/2013 12:00 pm

#2 Mensaje por Anon » 16/05/2013 10:08 am

Solucionado

Después de probar formas y formas, resulta que era una tontería.

Código: Seleccionar todo

int main (int argc, char **argv)
Ahí estaba el fallo.

El código queda así:

Código: Seleccionar todo

#include <stdio.h>
#define MAXLONGLINEA 256

int main (int argc, char **argv)
{
  FILE  *pforigen;
  FILE  *pfdestino;
  char linea[MAXLONGLINEA];
  
if (argc == 3)
{
  pforigen = fopen(argv[1],"r");
  if ( pforigen == NULL )
     {
		puts("Error al abrir el fichero\n");
		return 1;
     }

  pfdestino = fopen(argv[2],"w"); 
  if ( pfdestino == NULL )
     {
		puts("Error al abrir el fichero\n");
		return 1;
     }

	while (fgets(linea,MAXLONGLINEA,pforigen) != NULL )
     {
     fputs(linea,pfdestino);
     }
  
  fclose(pforigen);
  fclose(pfdestino);
}
  return 0;
}

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados