求C语言的一段代码!

swpuxiaoluo 2007-05-28 10:45:01
现有两个文件MAC.TXT与IP.TXT,MAC.TXT文件内容如下:
00-EO-4C-6C-08-75
00-E3-4C-5C-98-35
00-08-02-B3-FC-99
00-30-6d-d0-34-5b
00-02-a5-85-57-bb
00-15-f2-c1-b5-3c
00-0f-3d-80-b8-ce
00-e0-a0-07-02-d9
00-40-05-47-13-07
00-13-77-49-45-09
00-e0-4c-01-85-13
00-05-07-ab-c0-16
00-14-78-20-3e-b6
00-15-c5-79-86-9b
00-20-6d-e0-34-5b
00-02-75-85-97-bb
00-15-f2-31-b5-3c
00-0f-3d-80-48-ce
00-e0-a0-07-02-49
00-30-05-47-13-07
00-23-77-49-45-09
00-d0-4c-01-85-13
00-75-07-ab-c0-16
00-74-78-20-3e-b6
00-65-c5-79-86-9b
IP.TXT文件内容如下:
172.16.86.1
172.16.86.28
172.16.86.40
172.16.86.64
172.16.86.146
172.16.86.200
172.16.86.207
172.16.86.216
172.16.86.217
172.16.87.18
172.16.87.48
172.16.86.10
172.16.86.27
172.16.86.41
172.16.86.34
172.16.86.147
172.16.86.201
172.16.86.208
172.16.86.210
172.16.86.214
172.16.87.100
172.16.87.49
172.16.86.127
172.16.87.19
172.16.87.45
现要求将MAC.TXT中的MAC地址与IP.TXT中的IP地址进行一一对应。
谢谢帮忙!
题目主要的是关于C语言的字符处理问题,需要的技巧还是比较高的,大家一起努力!
...全文
336 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSDSQJBOYACCP_10 2007-10-11
  • 打赏
  • 举报
回复
大哥下次写出来用WORD形式。这样没有格式。。
starwalker 2007-10-10
  • 打赏
  • 举报
回复
vector<pair<string,string>>
jsjacky1101 2007-10-10
  • 打赏
  • 举报
回复
晕,都是高手啊
飞哥 2007-10-10
  • 打赏
  • 举报
回复
就是做一个类似c++中Map的东西

找到一一对应关系
可以用一个结构数组来存放
Treazy 2007-09-29
  • 打赏
  • 举报
回复
typedef struct
{
unsigned char mac[6];
unsigned char ip[4];
}MACIP;

MACIP macip[100];

#define LEN1 17
#define LEN2 13
#define TYPE1 1 //mac转换
#define TYPE2 2 //ip转换


char AsciiToBin(char Src)
{
char tmp;
switch(Src)
{
case '0': tmp = 0x00;
break;
case '1': tmp = 0x01;
break;
case '2': tmp = 0x02;
break;
case '3': tmp = 0x03;
break;
case '4': tmp = 0x04;
break;
case '5': tmp = 0x05;
break;
case '6': tmp = 0x06;
break;
case '7': tmp = 0x07;
break;
case '8': tmp = 0x08;
break;
case '9': tmp = 0x09;
break;
case 'a':
case 'A': tmp = 0x0a;
break;
case 'b':
case 'B': tmp = 0x0b;
break;
case 'c':
case 'C': tmp = 0x0c;
break;
case 'd':
case 'D': tmp = 0x0d;
break;
case 'e':
case 'E': tmp = 0x0e;
break;
case 'f':
case 'F': tmp = 0x0f;
break;
default:
break;
}
return tmp;

}
void Transfer(unsigned char *Dst, unsigned char *Src, int len, char type)
{
char i = 0, j, ipDotnum = 0;
unsigned char tmp[3];


if(type == TYPE1)
{
while(1)
{
*Dst = AsciiToBin(*Src++) << 4;
*Dst |= AsciiToBin(*Src++);
Dst++;
len -= 2;
if(len == 0)
{
return;
}
if(*Src == '-')
{
Src++;
len--;
}

}
}
else if(type == TYPE2)
{
while(1)
{
if(*Src == '.' || *Src == ' ' || *Src == 0x0A || *Src == 0x0D)
{
ipDotnum++;
Src++;
len--;
continue;
}
while(*Src != '.')
{
tmp[i] = *Src++;
i++;
len--;
if(*Src == ' ' || *Src == 0x0D)
{
len = 0;
break;
}
if(ipDotnum == 3 && i == 3)
{
ipDotnum = 0;
len = 0;
break;
}
}
*Dst = 0;
for(j=0; j<i; j++)
{
*Dst = AsciiToBin(tmp[j]) + 10*(*Dst);
}
Dst++;
i=0;
if(len == 0)
{
return;
}
}
}
}

main()
{
int ch, i=0;
int ipNum = 0;
unsigned char tmp[17];
FILE *p;

p = fopen("mac.txt", "rb");
if(p == NULL)
{
printf("Open MAC-File Failed");
}
else
{
while(1)
{
fread(tmp, 1, LEN1, p);
Transfer(macip[i++].mac, tmp, LEN1, TYPE1);
if(feof(p))
{
break;
}
else
{
while(1)
{
ch = fgetc(p);
if(ch == 0x0A)
{
break;
}
if(feof(p))
{
break;
}
}
if(feof(p))
{
break;
}
}
}
}

i=0;
p = fopen("ip.txt", "rb");
if(p == NULL)
{
printf("Open File Failed");
}
else
{
while(1)
{
fread(tmp, 1, LEN2, p);
Transfer(macip[i++].ip, tmp, LEN2, TYPE2);
if(feof(p))
{
break;
}
else
{
while(1)
{
ch = fgetc(p);
if(ch == 0x0A)
{
break;
}
if(feof(p))
{
break;
}
}
if(feof(p))
{
break;
}

}
}
}
}

程序需要加入相应头文件
对应的MAC和IP保存在macip中

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧