c语言中对N个IP地址进行排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中对N个IP地址进行排序相关的知识,希望对你有一定的参考价值。

就是你想输入几个就对几个进行排序,还有他们是怎么比较大小,能不能用直接插入法进行排序 谢谢 100分啊
我的排序有什么问题么 我是要按从小到大排序
void sort(char g_fwmTrustedIpTab[FWM_TRUSTED_IP_TAB_MAX_SIZE][FWM_IP_ADDR_LEN])

char temp[FWM_IP_ADDR_LEN];
int i,j;
for(i=0;i<g_fwmTrustedIpNum;i++)
for(j=i+1;j<g_fwmTrustedIpNum;j++)
if(strcmp(g_fwmTrustedIpTab[i],g_fwmTrustedIpTab[j])>0)
strcpy(temp,g_fwmTrustedIpTab[i]);
strcpy(g_fwmTrustedIpTab[i],g_fwmTrustedIpTab[j]);
strcpy(g_fwmTrustedIpTab[j],temp);


#include <stdio.h>
#include <stdlib.h>

typedef unsigned char BYTE ;

typedef struct _IP
BYTE seg[4];
struct _IP *next;
IP;

void main()

int i, found;
IP *pip, *ptem, *pfind;
BYTE tem_ip[4];
pip = (IP *)malloc(sizeof(IP));
pip->next = pip;

printf("Input IP address like:\n192.168.1.11\n10.10.128.11\n......\nInput '0.0.0.0' to end input\n");
while (1)
scanf("%d.%d.%d.%d", &tem_ip[0], &tem_ip[1], &tem_ip[2], &tem_ip[3]);
if (!(tem_ip[0] || tem_ip[1] || tem_ip[2] || tem_ip[3]))
break;
ptem = (IP *)malloc(sizeof(IP));
for (i = 0; i < 4; i++)
ptem->seg[i] = tem_ip[i];

found = 0;
pfind = pip;
while (pfind->next != pip)
for (i = 0; i < 4; i++)
if (ptem->seg[i] < pfind->next->seg[i])
found = 1;
break;
else if (ptem->seg[i] > pfind->next->seg[i])
break;


if (found)
break;
pfind = pfind->next;


ptem->next = pfind->next;
pfind->next = ptem;



printf("\nSorted ip address:\n");
ptem = pip->next;
while (ptem != pip)
printf("%d.%d.%d.%d\n", ptem->seg[0], ptem->seg[1], ptem->seg[2], ptem->seg[3]);
ptem = ptem->next;



运行结果:
Input IP address like:
192.168.1.11
10.10.128.11
......
Input '0.0.0.0' to end input
222.158.234.4
222.158.122.124
192.168.1.1
192.156.11.22
0.0.0.0

Sorted ip address:
192.156.11.22
192.168.1.1
222.158.122.124
222.158.234.4
Press any key to continue
参考技术A union ip
unsigned int intValue;
unsigned char[4] cValue;
;

...c里面有union的吧?如果没有,就直接存到unsigned int里面,输出的时候位移一下

大小就直接用int的大小比较,排序同int。。

哦。。如果tc的话,把int改成long

。。居然用这个存ip。。问题应该不大吧,后面那堆strcpy我懒得看了

高手过来指教一下,怎么在excel中对ip地址进行排序?

假如ip地址在a列,空白列中用公式:=--replace(a1,1,10,)得出最后一个数值,用该列排序,排序后删除该列。 参考技术A 我不是高手,说个笨方法,
你把每个IP全部按照“.”符号分列,然后你把A列的IP数全部分列到B到E列,再按照从E到B列的顺序先后进行升序排列
这样A列的IP就按大小排列了。

以上是关于c语言中对N个IP地址进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 中对存储在字典中的 IP 地址进行排序?

高手过来指教一下,怎么在excel中对ip地址进行排序?

如何用C语言判断ip地址是不是合法

C语言 问题 C: IP地址的合法性检查?

请问 c语言怎样获取计算机ip地址啊

需要帮助在 perl 中对数组进行排序