人人笔试题 截取html字符串

C实现

截取html

设定是html字符串里只有<p>标签,且闭合

输入:"abc<p class='c1'>defg</p>hijk<p style='width=100px;'>lmn</p>"

截取3个字符

输出:abc

截取4个字符

输出abc<p class='c1'>d</p>


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * htmlSource="abc<p class='c1'>defg</p>hijk<p style='width=100px;'>lmn</p>";
char * GetSubString(char* Source,int length)
{
	int htmlLength=0;
	for(int i=0;i<strlen(Source);i++)
	{
		if(Source[i]=='<')
		{
			while(Source[i]!='>')
				i++;
		}
		else
			htmlLength++;
	}
	if(length>htmlLength)
	{
		printf("截取长度过长\n");
		return NULL;
	}
	else
	{
		char* target=(char *)malloc(sizeof(char)*(strlen(Source)+1));
		int sum1=0;
		int sum2=0;   
		int flag=0;
		for(int i=0;i<length;i++)
		{
			if(Source[sum2]=='<')
			{
				if(Source[sum2+1]=='p')
					flag=1;
				else if(Source[sum2+1]=='/')
					flag=0;
				do
				{
					target[sum1++]=Source[sum2++];
				}
				while(Source[sum2]!='>');
				target[sum1++]=Source[sum2++];
				target[sum1++]=Source[sum2++];
			}
			else
			{
				target[sum1++]=Source[sum2++];
			}
		}
		if(flag==1)
		{
			target[sum1++]='<';
			target[sum1++]='/';
			target[sum1++]='p';
			target[sum1++]='>';
			flag=0;
		}
		target[sum1]='\0';
		return target;
	}
}
void main()
{
	int length=0;
	while(length!=-1)
	{
		printf("输入截取长度\n");
		scanf("%d",&length);
		char * target=GetSubString(htmlSource,length);
		printf("%s\n",target);
		free(target);
	}
}


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值