C语言 -> URL合法性判断

一个合法的URL是一个由三部分构成的字符串:协议名+域名+[资源位置]+[/],本题中规定协议只能是http或者https;域名是由“.”分隔的2~4段字符串,每个字符串由英文字母、数字或者下划线组成;资源位置是由“/”分隔的若干段字符串组成,表示资源在服务器上存储的位置,每个字符串由英文字母、数字或者下划线组成,最后一段可以是文件名,形式为“字符串.字符串”;末尾可以有“/”。其中资源位置和/都是可选的,协议名和域名是必须的。

根据这一规则,下面这些都是合法的URL:
http://www.mafengwo.cn/http://www.mgtv.com/https://b.faloo.comhttps://dgss0.bdstatic.com/5bVSsj_p_tVS5dKfpU_Y_D3/data/42634b577586fc45fb1e205c2a12ced0
https://dgss0.bdstatic.com/5eR1dDebRNRTm2_p8IuM_a/res/r/image/2016https://s.click.taobao.com/M3SR8gu/index.html
https://s.click.taobao.com/M3SR8gu/homepage.htm/

下面这些都是非法的URL:
http://www.mafengwo.cn/. , http://www@mgtv.com, https://b.faloo.com.cn.jp,
https:/dgss0.bdstatic.com , ftp://s.click.taobao.com/ , https//s.click.taobao.com/

请编程判断给定的字符串是否是形式上合法的域名。
题目中先给出一个整型数n(1 ≤ n ≤ 30),表示后面有n行字符串需要判断。随后的n行中,每行一个字符串,需要进行合法性判断。对于合法的字符串,应输出“Y”,否则输出“N”,结果中间不用空格。

样例
输入样例
4
https://dgss1.bdstatic.com
http://mail.10086.cn/
http://www.12377.cn/index.htm
http://www.cyberpolice.cn/wfjb/homepage.ht.ml
输出样例
DA:YYYN

了解一下
正则表达式

有限状态自动机

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^