#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define TAMAX 600 

void ObtenerDatosArchivos(int argc,char *argv[], int *arreglo, int *longitud );
FILE *AperturaArchivoVerificacion();
void ImprimirDatos( int *arreglo, int longitud );
void  LeerDatosArchivo( FILE *Arch, int *arreglo, int *longitud );
FILE *AbrirArchivo( char ruta_nombre[], char modo_apertura[] );
void CerrarArchivo(  FILE *arch);
int *AsignacionDinaminca( int tamanio);
void LiberarMemoria(int *arreglo);


int main(int argc,char *argv[])
{
  //arreglo de tamaņo indefinido
  int *arreglo;  
  int longitud=0;
  
  //Asignacion dinamica de espacion en memoria
  arreglo = AsignacionDinaminca(TAMAX); 
  
  //Obtencion de datos    
  ObtenerDatosArchivos(argc, argv, arreglo, &longitud );
  
  ImprimirDatos(arreglo, longitud );
   
  //Liberar Memoria del apuntador
  LiberarMemoria(arreglo);
  
  return(0); 
 }
 
/**
 */
int *AsignacionDinaminca(int tamanio)
{
  int *arr;
  
     /***COMPLETE CODIGO **/
  
  return arr;
} 

/**
 */
void LiberarMemoria(int *arreglo)
{
      /***COMPLETE CODIGO **/
}

/**
 */
void ImprimirDatos( int *arreglo, int longitud )
 {
	int cont;
	printf("\n\n\tEl contenido del arreglo es: \n");
	for(cont=0; cont<longitud; cont++)
	{
		if(cont != 0 && cont % 10 == 0 )
		{
                printf("\n");
        }
        
		//printf("\n Arreglo[%d]=%d ", cont, arreglo[cont]);
		printf(" %d ", arreglo[cont]);

	}
}
 
/**
 */ 
void ObtenerDatosArchivos(int argc,char *argv[], int *arreglo, int *longitud )
{
  FILE *arch;
  
  //apertura del archivo en caso de que no se pase el nombre como argumento
  if( argc < 1 )
  {
		arch = AperturaArchivoVerificacion();
  }
  else
  {
	arch= AbrirArchivo( argv[1], "r+");
	if(	arch==NULL) 
	{
		arch = AperturaArchivoVerificacion();
	}
  }
  
  if(arch != NULL)
  {
    //Leer los datos del archivo de texto
    LeerDatosArchivo(arch, arreglo, longitud);   
    CerrarArchivo(arch); 
  }
}

/**
 */
FILE *AperturaArchivoVerificacion()
{
   FILE *arch;
   char ruta_nombre[200]; 
   
   do{
   
      printf("\n\n\tFORMATO Completo (puede auxiliarse del comando 'pwd' para obtener la ruta del archivo");
      printf(" \n Ejemplo: /lab/computacion/PA2/pa/DPPPractica1/Datos.txt");
      printf("\n\n\t Teclee el nombre del archivo:");
      setbuf(stdin, NULL);
	  scanf("%s", &ruta_nombre);
      arch= AbrirArchivo( ruta_nombre, "r+");
   }while(arch == NULL);
}
 
 /** 
*Descripcion: 
*Entrada: 
*Salida: 
**/
void  LeerDatosArchivo( FILE *Arch, int *arreglo, int *longitud )
{  
   int valor;
  *longitud=0;
 
 
   /***COMPLETE CODIGO **/
 
}


/** 
*Descripcion: 
*Entrada: 
*Salida: 
**/
FILE *AbrirArchivo( char ruta_nombre[], char modo_apertura[] )
{
   FILE *arch;
   
   arch=fopen(ruta_nombre,modo_apertura);
   
   if(arch==NULL)
   {
                 printf("\n\n\tERROR AL ABRIR EL ARCHIVO %s", ruta_nombre);
   }
   else
   {
                 printf("\n\tEl archivo se abrio con exito!!!");               
   }
   return (arch);
}

/** 
*Descripcion: 
*Entrada: 
*Salida: 
**/
void CerrarArchivo(  FILE *arch)
{
  fclose(arch);
}

