文章
81
粉丝
2
获赞
521
访问
11.4k
#include<iostream>
#include<string>
#include<cstdio>
using namespace std;
int main(){
string s;
cin >> s;
int a,b,c,d;
char x,y,z;
if(sscanf(s.c_str(), "%d.%d.%d.%d%c", &a,&b,&c,&d,&x) != 4){
cout<<"Error";
return 0;
}
if(a<0||a>255||b<0||b>255||c<0||c>255||d<0||d>255){
cout<<"Error";
return 0;
}
printf("0x%02X%02X%02X%02X",a,b,c,d);
return 0;
}
由于题目说明输入可能是任意字符串,因此不能直接用 cin 读取整数,而需要先把整行输入读入为字符串,然后再按照 IP 地址的格式进行解析。
程序首先使用 string 类型读取输入字符串 s,然后使用 sscanf 从字符串中按照指定格式解析数据。sscanf 的作用是从字符串中按给定格式读取数据,它的功能类似 scanf,但 scanf 从键盘读取数据,而 sscanf 从字符串中读取数据。函数基本形式为 sscanf(字符串, "格式", 变量地址)。
代码中的 sscanf(s.c_str(), "%d.%d.%d.%d%c", &a,&b,&c,&d,&x) 表示按 a.b.c.d 的格式读取四个整数,其中 %d 表示读取整数,“.” 表示匹配字符点号,“%c” 用于尝试再读取一个字符,用来检测输入中是否存在多余字符。例如输入 23.23.11.23.123,...
登录后发布评论
暂无评论,来抢沙发