c++字符串处理

来源:百度知道 编辑:UC知道 时间:2024/06/30 08:58:09
Description
xiaoming也不知道最近是怎么啦,老是喜欢去研究网络IP地址。这样一来,他就请他的亲朋好友收集了一大堆的IP地址,但是当他仔细检查的时候发现,这些IP地址有很多是不合法的,这让小明很是烦恼。
一个正确的IP格式是形如192.168.0.122 的地址,它由四个从0~255的数字和分隔符'.',来组成,数字不包含前导零,一个IP地址中不包含有其它的字符,小明收到的IP地址中是不会出现空格和制表符等空白字符。以下为一些错误的IP地址:
(1)192.168.00.123 它的数字包含了前导0
(2)192.16b.0.123 包括了非法字符'b'
(3)192.168.256.123 256超过了数字的范围。
那么就请你写一个程序,去判断哪些字串是合法的IP地址。

Input
多组数据输入。第一行为数据的组数n.
每一组数据为一个不包含空格的字符串。

Output
对于每个字符串,如果该字符串是一个合法的IP地址的话,输出“yes”,否则输出“no”.

Sample Input

6
192.168.0.122
192.168.00.123
192.16b.0.123
192.168.256.123
0.0.0.0
123.125.122

Sample Output

yes
no
no
no
yes
no

小弟学习的是pascal语言,对C++如何处理字符串很是头痛
请给出C++的源代码,小弟不胜感激,
另外请教C++如何使用类似pascal中的eof函数
这道题目是相当弱智的,请高人稍微动动手,小弟不胜犬马怖惧之情```我完全不知道C++关于字符方面的函数,请逐个介绍一下
高金山 - 首席运营官 十三级
你的程序我提交WA了,不知道出了什么问题

#include <stdio.h>
#include <string.h>

int checkIP(const char* ip)
{
char arr[4][4];
int i;
if(sscanf(ip, "%[^.].%[^.].%[^.].%s", arr[0], arr[1], arr[2], arr[3]) != 4)
return 0;
for(i = 0; i < 4; i++)
{
int j, val, len = strlen(arr[i]);
if(len > 1 && arr[i][0] == '0')
return 0;
for(j = 0; j < len; j++)
if(arr[i][j] < '0' || arr[i][j] > '9')
return 0;
sscanf(arr[i], "%d", &val);
if(val > 255)
return 0;
}
return 1;
}
int main(void)
{
int n;
char ip[20];
scanf("%d", &n);
while(n--)
{
scanf("%s", ip);
printf("%s\n", checkIP(ip) ? "yes" : "no");
}

return 0;
}

c语言的,c++编译器也能编译通过的。

#include<stdio.h>

int main()