sscanf_s与sscanf函数在对字符串控制写入方面比较灵活,特别是对ip地址的处理,有效性判断等问题,都能很有效的解决。
//sscanf sscanf_s
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
char buf[256]={0};
char bufs[256]={0};
sscanf("123456789","%s",buf);//复制字符串
printf("%s\n",buf);
sscanf("123456789","%4s",buf);//复制4个字符,末尾加'\0'
printf("%s\n",buf);
cout<<buf[5]<<endl;//测试:不消除之前的buf的内容,只是做覆盖
sscanf("192.168.0.0~255.255.255.0","%[^~]~%s",buf,bufs);//截取~之前的字符,存在第一个buf中,~之后的字符存在bufs中
cout<<buf<<endl;//输出ip
cout<<bufs<<endl;//输出mask
//演示sscanf_s
int ip[4]={0};
sscanf_s("192.168.1.1","%d.%d.%d.%d",&ip[0],&ip[1],&ip[2],&ip[3]);//可以分别得到每位的值,进行判断
if(ip[0]>255||ip[0]<0||ip[1]>255||ip[1]<0||ip[2]>255||ip[2]<0||ip[3]>255||ip[3]<0)
{
cout<<"ip error"<<endl;
}
else
{
cout<<"ip ok"<<endl;
}
system("pause");
return 0;
}