Red de conocimientos sobre prescripción popular - Conocimiento de perdida de peso - ¿Cómo leer la dirección IP de un archivo en Windows y convertirla a un formato largo sin firma en lenguaje C?

¿Cómo leer la dirección IP de un archivo en Windows y convertirla a un formato largo sin firma en lenguaje C?

# include & ltstdio.h & gt

# include & ltstdlib.h & gt

# include & ltstring.h & gt

/* IP en caracteres Convierte el formato de cadena a entero.

Parámetros:

IP en forma de cadena rayada.

intIP es el número entero después de una conversión exitosa.

Devolver:

Si la conversión falla, devuelve 0; en caso contrario, devuelve 1.

*/

int strToInt(char strIP[], unsigned long *intIP)

{

int longitud = strlen(strIP

int i=0, k=3, parte = 0;

* intIP = 0; ; i++)

{

if(strIP[i]== ' . '|| strIP[i]=='\0 ')

( * intIP)| =(parte & lt;& lt(k - *8)), parte = 0;

else if(strIP[I]>= ' 0 ' & amp& ampstrIP [I] <='9')

part = part * 1(strIP[I]-' 0 ');

Otros

Devuelve 0; /p>

}

Retorno 1;

}

/* IP se convierte en un número entero en forma de cadena.

Parámetros:

IP entera

StrIP convierte IP en forma de cadena.

Devolver:

Si la conversión falla, devuelve 0; en caso contrario, devuelve 1.

*/

int intToStr(unsigned long intIP, char strIP[])

{

int buf[4 ],I ;

for(I = 0;i<4;i++)

{

buf[I]= intIP % 256;

intIP /= 256;

}

Si (intIP!=0)

Devuelve 0;

Otros

{

sprintf(strIP, " %d.%d.%d.%d ",buf[3],buf[2],buf[1],buf[0 ]); p>

Devolver 1;

}

}

int main(int argc, char *argv[])

{

char strIP[16];

Unsigned long intIP

// ip se guarda en el archivo ips.txt. Aquí se utiliza la redirección de entrada para facilitar aporte.

if(freopen("ips.txt","r",stdin)!=empty)

{

//Bucle para leer la cadena, hasta el final del archivo.

while(scanf("%s ",strIP)!=EOF)

{

//Palabra de IP de cadena a IP entera

if(strToInt(strIP, & ampintIP))

{

Printf ("IP de cadena convertida a entero: %s (cadena) = %lu (decimal) = % lX(hex)\n ",strIP,intIP,intIP);

//Invertir la conversión de IP entera a IP de cadena y verificar la exactitud de la conversión.

intToStr(intIP, strIP);

Printf("Convertir entero a IP de cadena: % lu (decimal) = %lX (hexadecimal) = %s (cadena de caracteres)\n \n ", intIP, intIP, strIP);

}

Otro

{

Printf("% s no es un IP legal! \n\n ",strIP);

}

}

}

Otros

{

Printf("¡No se puede abrir el archivo ip! \ n "

}

scanf("%d ", & ampintIP) ;

System("pause");

Devuelve 0;

}

/*

Caracteres Convierte el IP de cadena a un número entero: 202.112.1 (cadena) = 3396371 (decimal) = CA700101 (decimal)

Hexadecimal)

Convierte el número entero a una IP de cadena: 3396337921 (Decimal) = CA700101 (Hex) = 202.112.1 (

String)

/¡No es una IP legal!

Convertir IP de cadena a entero: 255.255.255.0 (cadena) = 4294967040 (decimal) = FFFFFF00 (

Hexadecimal)

Conversión de entero en una IP de cadena: 4294967040 (decimal) = FFFFFF00 (hexadecimal) = 255.255.255.0.

(String)

Convierte la cadena IP en un número entero: 202.112.1.2 (String) = 3396337922 (Decimal) = CA700102 (Diez

Dieciséis Base)

Convertir entero a IP de cadena: 3396337922 (decimal) = CA700102 (hexadecimal) = 202.112.1.2 (

Cadena)

/¡No es una IP legal!

Convertir IP de cadena a entero: 255.255.255.0 (cadena) = 4294967040 (decimal) = FFFFFF00 (

Hexadecimal)

Conversión de entero en una IP de cadena: 4294967040 (decimal) = FFFFFF00 (hexadecimal) = 255.255.255.0.

(String)

Convierte la cadena IP en un número entero: 202.112.2.1 (String) = 33968177 (Decimal) = CA700201 (Diez

Dieciséis Base)

Convertir entero a IP de cadena: 3396338177 (decimal) = CA700201 (hexadecimal) = 202.112.2.1 (

Cadena)

/¡No es una IP legal!

Convertir IP de cadena a entero: 255.255.255.0 (cadena) = 4294967040 (decimal) = FFFFFF00 (

Hexadecimal)

Conversión de entero en una IP de cadena: 4294967040 (decimal) = FFFFFF00 (hexadecimal) = 255.255.255.0.

(Cadena)

*/