学习了题解中的sscanf和sprintf。可是明显有问题。
#include<bits/stdc++.h>
using namespace std;
int n;
map<string, int> Q;
bool Er(int a){
if(0 <= a && a <= 255){
return 1;
}
else{
return 0;
}
}
bool fl(char s[]){
int s1, s2, s3, s4;
sscanf(s,"%d.%d.%d:%d", &s1, &s2, &s3, &s4);
//cout<<s1<<" "<<s2<<" "<<s4;
if( Er(s1) && Er(s2) && Er(s3) && (s4 <= 65535 && s4 >= 0)){
;
}
else {
return 0;
}
char ss[64];
sprintf(ss,"%d.%d.%d:%d",s1 ,s2 ,s3 ,s4);
for(int i = 0;i <= strlen(ss);i++){
if(s[i] != ss[i]){
return 0;
}
}
return 1;
}
int main(){
cin >> n;
for(int i = 1;i <= n;i++){
char a[110],b[110];
cin >> a >> b;
if(!fl(b)){
cout<<"ERR"<<endl;
continue;
}
if(a[0] == 'S'){
if(Q[b]){
cout << "FAIL" << endl;
}
else{
cout << "OK" << endl;
Q[b] = i;
}
}
else {
if(!Q[b]){
cout << "FAIL" << endl;
}
else{
cout << Q[b] << endl;
}
}
}
}