全输出ERR,求调
查看原帖
全输出ERR,求调
744562
Aya_tt楼主2022/9/26 18:24

学习了题解中的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;
			}
		}
	}
} 
2022/9/26 18:24
加载中...