#include <stdio.h>
#include <stdlib.h>
int numeroIP=0; //Cantidad de #IPs que generara.
FILE *temp;
FILE *lista; //todos los numero del 254-0 en Hex.
FILE *config; //Informacion importante.
FILE *atm1;
FILE *atm2;
unsigned char c;
unsigned char temp_char;
unsigned char lista_char;
int temporal;
int main(int argc, char *argv[])
{
//INICIO - Prevencion: se ejecuta sin parámetro alguno.
if (argc!=1)
{
printf("Este programa recibio arumentos\nOpcion para resetear");
exit(1);
}
//FIN - Prevencion: se ejecuta sin parámetro alguno.
//Si el archivo existe, se destruye su contenido.
//Crear archivo de texto para lectura/escritura.
//Si el archivo no exite, se crea;
//Si el archivo existe, se destruye su contenido.
lista = fopen("lista","w+b");
atm1 = fopen("atm1.txt","w+");
atm2 = fopen("atm2.txt","w+");
/*INICIO - Rellenado de lista con valores 0xFF */
for(numeroIP=0; numeroIP<=254; numeroIP++)
{
putc((char)255,lista);
}
fclose(lista);
/* FIN - Rellenado de lista con valores 0xFF */
/* INICIO - Algoritmo para desordenar*/
fopen("lista","r+b");
//Mover aleatoriamente los numeros
numeroIP=0; //Reseteo a cero.
while(numeroIP <= 254)
{
rewind(lista);
//Obtener un numero de 0-254 corresponde al lugar a guardar.
srand(numeroIP);
temporal = numeroIP;
//temporal = (int) (254*rand()/(RAND_MAX+1.0));
if( fseek(lista,(long)temporal,SEEK_CUR) == 0 )
{
while(1)
{
lista_char = getc(lista); //obtener letra de temp
if ( feof(lista) )
{
//Error, alcanzado final de archivo.
rewind(lista);
//Neceario avanzar un byte para la proxima escritura
fseek(lista,1,SEEK_CUR);
}
if(lista_char == 255)
{
printf("El lugar actual NO esta ocupado\n");
break;
}
else
{
printf("El lugar actual SI esta ocupado\n");
//Se procede a buscar un luga vacio, DESPALAZANDOSE UN BYTE,
//APARTIR DE LA POSICION ANTERIOR.
if( fseek(lista,1,SEEK_CUR)!= 0 )
{
//Ocurrio un error.
printf("Retoceder al principio\n");
rewind(lista);
}
else
{
printf("Se a avanzado un byte\n");
system("PAUSE");
}
}
}
}
else
{
printf("Error al posicionar el apuntador lista aleatoriamente\n");
system("PAUSE");
exit(1);
}
system("PAUSE");
fseek(lista,-1,SEEK_CUR);
putc(numeroIP,lista);
printf("\n numeroIP= %d ",numeroIP);
printf("\n numeroAzar= %d ", temporal);
numeroIP++;
}
/* FIN - Algoritmo para desordenar*/
printf("Salida");
if ( fclose(lista) || fclose(atm1) || fclose(atm2) != 0)
printf("Error al cerrar un archivo");
else printf("Cierre corecto de todos los archivos");
system("PAUSE");
return 0;
}