写法有问题,在判断前导零的时候万一出现了01这种情况呢?
就像```
Server 192.168.01.1:100
```
```
你的程序输出OK
by yhliuhao @ 2023-10-18 16:52:16
并不是所有情况前导零都是两个,能过两个点很不错了,推荐学习一下sscanf和sprintf,简直是为它量身定做的
by yhliuhao @ 2023-10-18 16:54:39
@[lisuhengyu0617](/user/668868)
by yhliuhao @ 2023-10-18 16:55:17
```cpp
#include<bits/stdc++.h>
using namespace std;
int server[65540];
string s[1005];
int main(){
freopen("network.in","r",stdin);
freopen("network.out","w",stdout);
int n,k=0;
cin>>n;
memset(server,sizeof(server),0);
while(n--){
string w;
k++;
cin>>w>>s[k];
bool b=true;
int x=0,y=0,num=0;
for(int i=0;i<s[k].size();i++){
if((s[k][i]=='.'||s[k][i]==':')&&s[k][i+1]=='0'&&s[k][i+2]>='0'&&s[k][i+1]<='9'){
b=false;
//cout<<"qiandao"<<endl;
break;
}
if(s[k][i]=='.'){
x++;
//cout<<endl;
//cout<<"fuhao"<<' '<<num<<endl;
if(num>255){
//cout<<s[i]<<' '<<num<<endl;
b=false;
break;
}
if(x>3){
b=false;
break;
}
num=0;
}
else if(s[k][i]==':'){
y++;
//cout<<endl;
//cout<<"fuhao"<<' '<<num<<endl;
if(num>255){
//cout<<s[i]<<' '<<num<<endl;
b=false;
break;
}
if(y>1){
b=false;
break;
}
num=0;
}
else {
//cout<<"jiahe"<<endl;
num=num*10+s[k][i]-'0';
//cout<<num<<' ';
}
}
//cout<<endl<<endl;
if(num>65535){
b=false;
}
if(b==false){
cout<<"ERR"<<endl;
continue;
}
else{
if(w=="Server"){
if(server[num]==0){
server[num]=k;
cout<<"OK"<<endl;
continue;
}
else{
cout<<"FAIL"<<endl;
continue;
}
}
else{
if(server[num]!=0){
//cout<<num<<' ';
if(s[k]==s[server[num]]){
cout<<server[num]<<endl;
}
else{
cout<<"FAIL"<<endl;
}
continue;
}
else{
cout<<"FAIL"<<endl;
continue;
}
}
}
}
}
```
by lisuhengyu0617 @ 2023-10-18 16:58:45
@[lisuhengyu0617](/user/668868)
你这。。。
你试试
$Server$ $001.1.1.1:909$
by yhliuhao @ 2023-10-18 17:03:53
情况太多了,很难一一判断,还是换个写法叭
by yhliuhao @ 2023-10-18 17:05:00
没判断有没有冒号
我大致知道了
by lisuhengyu0617 @ 2023-10-18 17:07:21
???
什么意思
by yhliuhao @ 2023-10-18 17:13:40