Cómo leer la dirección IP del documento y convertirla en un tipo largo sin firmar usando lenguaje C en Windows
#include lt;stdio.hgt;
#include lt;stdlib.hgt;
#include lt;string.hgt;
/*Convertir IP en forma de cadena a un número entero
Parámetros:
strIP IP en forma de cadena
intIP Entero después de una conversión exitosa
Retorno:
Si la conversión falla, devuelve 0; de lo contrario, devuelve 1
*/
int strToInt(char strIP[], unsigned long * intIP)
{
int longitud = strlen(strIP);
int i=0, k=3, part=0;
*intIP=0;
for(i=0;ilt;=length;i)
{
if(strIP[i]== '.' || strIP[i]=='\0')
(*intIP) |= (partlt;lt;(k--*8)), part=0;
else if(strIP[i]gt;='0' amp; amp; strIP[i]lt;='9')
part=part*10 (strIP[i]- '0');
más
devuelve 0;
}
devuelve 1; /p>
/*Convertir IP en forma de cadena a un número entero
Parámetros:
intIP IP en forma de entero
strIP Convertir a IP en forma de cadena
Devolución:
Si la conversión falla, devuelve 0; de lo contrario, devuelve 1
*/
int intToStr(unsigned long intIP, char strIP[])
{
int buf[4], i
for(i=0; ilt; 4; i )
{
buf[i]=intIP256;
intIP/=256;
}
if(intIP ! =0)
devuelve 0;
else
{
sprintf(strIP, "d.d.d.d", buf[3], buf [2], buf[1], buf[0]);
return 1
}
}
int principal; (int argc, char *argv[])
{
char strIP[16];
intIP largo sin firmar;
/ /ip se guarda en el archivo ips.txt y aquí se utiliza la redirección de entrada para facilitar la entrada.
if(freopen("ips.txt", "r", stdin)!=NULL)
{
// Bucle para leer la cadena hasta Fin del archivo
while(scanf("s",strIP) !=EOF)
{
// palabra de la cadena IP entero IP
if(strToInt(strIP, amp; intIP))
{
printf("La cadena IP se convierte en un número entero: s (cadena) = lu (decimal) = lX(hex)\n", strIP, intIP, intIP);
// Realiza la conversión inversa de IP entera a IP de cadena para verificar la exactitud de la conversión
intToStr( intIP, strIP);
printf("Convertir un número entero en una IP de cadena: lu (decimal) = lX (hexadecimal) = s (cadena) \n\n", intIP, intIP, strIP);
}
else
{
printf("¡s no es una IP legal! \n\n",strIP);
}
}
}
else
{
printf(" ¡No se puede abrir el archivo ip!\n");
}
scanf("d", amp; intIP);
system("pause") ;
return 0;
}
/*
IP de cadena Convertir a un número entero: 202.112.1.1 (cadena) = 3396337921 (decimal) = CA700101 (decimal
Hex)
Un número entero convertido en una cadena IP: 3396337921 (decimal) ) = CA700101 (hex) = 202.112.1.1 (
String)
/ ¡no es una IP legal!
Convierte la cadena IP a un número entero: 255.255.255.0 (cadena) = 4294967040 (decimal) = FFFFFF00 (
Hex)
Un entero convertido a IP de cadena: 4294967040 (decimal) = FFFFFF00 (hexadecimal) = 255.255.255.0
(String)
IP de cadena convertida a un número entero: 202.112 .1.2 (cadena) = 3396337922 (decimal ) = CA700102 (decimal) Base) = 202.112.1.2 (
Cadena)
>/ ¡no es una IP legal!
Convierte la cadena IP a un número entero: 255.255.255.0 (cadena) = 4294967040 (decimal) = FFFFFF00 (
Hex)
Un entero convertido a IP de cadena: 4294967040 (decimal) = FFFFFF00 (hexadecimal) = 255.255.255.0
(String)
IP de cadena convertida a un número entero: 202.112 .2.1 (cadena) = 3396338177 (decimal ) = CA700201 (decimal) Base) = 202.112.2.1 (
String)
/ ¡no es una IP legal!
Convierte la cadena IP a un número entero: 255.255.255.0 (cadena) = 4294967040 (decimal) = FFFFFF00 (
Hex)
A Convertir entero a cadena IP: 4294967040 (decimal) = FFFFFF00 (hexadecimal) = 255.255.255.0
(cadena)
*/