西工大机试 判断IP地址是否合法

题目描述

判断IP地址是否合法,N行,以字符串形式输入,格式为a.b.c.d,每个均为整数,输出判断是否为有效IP

输入样例:
2
1.2.3.4
172.168.0.300
输出:
Yes
No

代码

#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    int n;
    cin>>n;
    while(n--) {
        char s[100];
        cin>>s;
        int flag=1;
        char *part=strtok(s,".");
        while(part) {
            int num=stoi(part);
            if(num<0||num>255) {
                cout<<"No"<<endl;
                flag=0;
                break;
            }
            else
                part=strtok(NULL,".");
        }
        if(flag)
            cout<<"Yes"<<endl;
    }
}

补充知识

strtok

1.函数原型

char *strtok(char s[], const char *delim);

2.头文件

string.h

3.函数功能

分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。

4.返回值:返回下一个分割后的字符串指针,如果已无从分割则返回NULL

字符串指针和字符串数组

char *s="abc";指向字符串常量的指针,此时abc存放在常量区,s在栈,指针指向的字符串只能访问不能修改,可以改变指针的指向

char s[10]="abc"; 存放在栈区,可以修改

如果只读取,两个都可以用,修改只能用字符数组

猜你喜欢

转载自www.cnblogs.com/iclaire/p/12665866.html