第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

照著書上打的“IP地址的合法性及子網(wǎng)判斷”為什么顯示錯(cuò)誤運(yùn)行不了。。。求大神

照著書上打的“IP地址的合法性及子網(wǎng)判斷”為什么顯示錯(cuò)誤運(yùn)行不了。。。求大神

C C++
永遠(yuǎn)的魔獸玩家 2016-04-12 23:01:03
#include<iostream.h>#include<string.h>#include<stdlib.h>#include<ctype.h>//定義IP地址類class ipTest{ char ip[15]; char subnetPlusMask[18]; char subnet[18]; char TempIp[15]; char TempSub[18]; int makk; bool maskIsValid;public: ipTest(char*,char*); ~ipTest(){}; bool NoIlleagalChar(char*); bool ipIsValid(char*); bool subnetIsValid(char*); void belong(); void print();};void main(int argc,char*argv[]){ if(argc!=3) { cout<<"please input command:ip_test subnet/mask ip"; return; } else { if(strlen(argv[1])>18) { cout<<"Subnet/mask is too long!"; return; } if(strlen(argv[2])>15) {? ? ? ? ? ? cout<<"Ip Address is too long!"; return; } ipTest test(argv[1],argv[2]); test.print(); }}//ip地址類構(gòu)造函數(shù)ipTest::ipTest(char* subnetPlusMask,char *ip){ maskIsValid=true; char temp[2]; //將'/'前的字符復(fù)制到subnet中 int smLen=strlen(subnetPlusMask); for(int i=0;i<smLen&&subnetPlusMask[i]!='/';i++) { this->subnet[i]=subnetPlusMask[i]; this->TempSub[i]=subnetPlusMask[i]; } subnet[i]='/0'; TempSub[i]='/0'; //初始化mask和maskIsValid if(i<=smLen-2) { if(i==smLen-2) { temp[0]=subnetPlusMask[i+1]; if(!isdigit(temp[0])) maskIsValid=false; } else { if(i==smLen-3) { temp[0]=subnetPlusMask[i+1]; temp[1]=subnetPlusMask[i+2]; if(!(isdigit(temp[0])&&isdigit(temp[1]))) maskIsValid=false; } } mask=atoi(temp); if(mask<0||mask>32) maskIsValid=false; } else maskIsValid=false; //為subnetPlusMask與ip賦值 strcpy(this->subnetPlusMask,subnetPlusMask)? ? strcpy(this->ip,ip); strcpy(this->TempIp,ip);}//調(diào)用判別函數(shù)并輸出結(jié)果void ipTest::print(){ bool subIsV=subnetIsValid(TempSub); bool ipIsV=ipIsValid(TempIP); //判斷子網(wǎng)是否合法 if(!subIsV) cout<<"subnet is invalid!"<<end1; else cout<<"Valid subnet:"<<subnet<<end1; //判斷掩碼是否合法 if(!maskIsValid) cout<<"Mask is invalid!"<<end1; else cout<<"Valid subnet: "<<subnet<<end1; //判斷IP地址是否合法 if(!ipIsV) cout<<"IP address is invalid!"<<end1; else cout<<"Valid ip address: "<<ip<<end1; //判斷IP底子是否屬于子網(wǎng) if(subIsV&&ipIsV&&maskIsValid) belong();}//判斷是否含有非數(shù)字符bool ipTest::NoIlleagalChar(char *ch){ unsigned int i; unsigned int k=0; //判斷美味是否為數(shù)字字符 for(i=0;i<strlen(ch);i++) if(isdigit(*(ch+i))==0) return false; return true; }//判斷IP地址是否合法bool ipTest::ipIsValid(char* ip){? ? ? char ch[]="."; ?char *token,*dot[4]; ?int iplen=0;//以“.”標(biāo)志將ip字符串按節(jié)分開 ?token=strtok(ip,ch); ?while(token!=NULL) ?{ ?dot[iplen]=token; ?iplen++; ?token=strtok(NULL,ch); ?} ?//判斷IP地址的段數(shù) ?if(iplen!=4) ?return false; ?//有非法字符或者某段值非法 ?for(int i=0;i<4;i++) ?if(!NoIllegalChar(dot[i])||atoi(dot[i])>255) ?return false; ?return true;}//判斷子網(wǎng)號(hào)是否合法bool ipTest::subnetIsValid(char* subnet){ //調(diào)用判別IP地址合法性函數(shù) if(!ipIsValid(subnet)) return false; return true;}//判斷IP地址是否為子網(wǎng)成員void ipTest::belong(){ int subLen=strlen(subnet); int ipLen=strlen(ip); unsigned int iIPA,isubA,iMask; unsigned char subA[4],ipA[4]; char temp[3]; int i,j,t=0; for(i=0,j=0;i<subLen;i++) { //temp數(shù)組中放“.”間的串 if(subnet[i]!='.') temp[j++]=subnet[i]; else { subA[3-t]=atoi(temp); j=0; t++; temp[0]=temp[1]=temp[2]='\0'; } } subA[0]=atoi(temp); temp[0]=temp[1]=temp[2]='\0'; iSubA=*(unsigned int *)subA; for(i=0,j=0,t=0;i<ipLen;i++) { if(ip[i]!='.') temp[j++]=ip[i]; else { ipA[3-t]=atoi(temp); j=0; t++; temp[0]=temp[1]=temp[2]='\0'; } } ipA[0]=atoi(temp); iIPA=*(unsigned int*)ipA; //獲得掩碼 iMask=0xffffffff; iMask<<=(32-mask); //子網(wǎng)號(hào)與掩碼不匹配 if((iSubA|iMask)!=iMask) { cout<<"Subnet and mask not match!"; return; } //子網(wǎng)號(hào)為全1 if((iSubA&iMask)==0) { cout<<"Subnet is all 0!"; return; } //IP地址與子網(wǎng)號(hào)比較 if((iSubA)==(iIPA&iMask)) { //IP地址全為1 if((iIPA|iMask)==0xffffffff) { cout<<"Ip address is all 1!"; return; } //IP地址全為0 if((iIPA|iMask)==iMask) { cout<<"Ip address is all 0!"; return; } //IP地址屬于內(nèi)網(wǎng) cout<<ip <<" belong to "<<subnetPlusMask<<end1; return; }? else cout<<ip<<" not belong to"<<subnetPlusMask<<end1;}
查看完整描述

2 回答

?
丨椎名真白丨

TA貢獻(xiàn)3條經(jīng)驗(yàn) 獲得超2個(gè)贊


放到編譯器里運(yùn)行了一遍之后錯(cuò)誤多到不想說啥。。。中間有一行的括號(hào)和嘆號(hào)是全角字符需要改。然后開始創(chuàng)建的變量有的名字錯(cuò)了,有的語句后面沒加分號(hào)??傊罩鴪?bào)錯(cuò)慢慢改改吧。另外最好不要用void main()了,這玩意早就out了,看著都感覺頭疼

查看完整回答
反對(duì) 回復(fù) 2016-04-13
  • 2 回答
  • 0 關(guān)注
  • 1960 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)