我是C的新手,我正在尝试将这四个整数合并为一个整数。
srand(time(NULL));
int intOne = 1+rand()%255;
int intTwo = 1+rand()%255;
int intThree = 1+rand()%255;
int intFour = 1+rand()%255;
int allCombined = ("%i.%i.%i.%i", intOne, intTwo, intThree, intFour);
printf("%i", allCombined);
我需要做的就是将这四个整数组合成一个IP地址格式的变量。
示例:108.41.239.216
如何将它们组合并将它们保存到变量中供以后使用?
答案 0 :(得分:1)
有很多方法可以做到这一点,没有一种方法是正确的。来到我的自然解决方案(在你的代码片段的上下文中)是将它们存储在长度为4的整数数组中。然后你可以分别格式化它们。例如:
int ip_address[ 4 ] = { intOne, intTwo, intThree, intFour };
...然后当你想要使用它时,它将如下:
printf( "%d.%d.%d.%d", ip_address[ 0 ], ip_address[ 1 ], ip_address[ 2 ], ip_address[ 3 ] );
...如果您需要访问部分IP地址,这也可以为您提供优势,您可以在O(1)中执行此操作。
答案 1 :(得分:0)
以下是一些可以将它们组合在一起的方法:
struct
。然后,您可以将其称为ipAddress.firstOctet
,ipAddress.secondOctet
等ipAddress[0]
,ipAddress[1]
等答案 2 :(得分:0)
试试这个:
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main()
{
srand(time(NULL ));
int intOne = 1 + rand() % 255;
int intTwo = 1 + rand() % 255;
int intThree = 1 + rand() % 255;
int intFour = 1 + rand() % 255;
{
struct in_addr ia = {
(intOne << 0) + (intTwo << 8) + (intThree << 16) + (intFour << 24) /* Here you initialise the integer. */
};
printf("0x%x", ntohl(ai.s_addr)); /* Convert the integer to the correct byte order (endianness) and print it. */
printf("%s\n", inet_ntoa(ia)); /* Here you get the dotted version. */
}
return 0;
}