Linux_C练习:输入一个字符串,同时输入帧头和帧尾(可以是多个字符),将该字符串中合法的帧识别出来。提示:帧头和帧尾分别是head和tail 字符串”asdheadhauboisoktai

本文介绍了一个使用C语言实现的字符串截取函数,该函数能够从指定的字符串中找出包含特定帧头和帧尾的有效部分。通过输入一串字符及帧头帧尾标志,程序能准确地定位并截取出合法的字符串部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


char *Legal(char *ptr, char *start, char *end)
{
	int l = strlen(ptr);
	int l1 = strlen(start);
	int l2 = strlen(end);
	int index = 0, index1 = 0, flag = 0, flag1 = 0;//
	char *tmp = (char *)malloc(sizeof(char) * 50);
	int i;
	if(NULL == tmp)
	{
		printf("NULL ERROR");
		exit(1);
	}


	for(i = 0; i < l - l1 + 1; ++i)
	{
		if(strncmp(ptr + i, start, l1) == 0)
		{
			flag = 1;
			break;
		}
		index++;
	}
	//printf("%d\n", flag);
	//printf("%d\n", strlen(ptr + index + l1));
	//printf("%d\n",l-index-l1);
	for(i = index; i < (l -l2 + 1 + l1); ++i)
	{
		if(strncmp(ptr + i, end, l2) == 0)
		{
			flag1 = 1;
			break;
		}
		index1++;

	}
	//printf("%d\n", flag1);
	if(flag != 1 ||  flag1 != 1)
	{
		printf("输入为非法字符串\n");
		exit(1);
	}
	strncpy(tmp, ptr + index, index1 + l2 );
	return tmp;

}



int main()
{
	char *ptr = (char *)malloc(sizeof(char) * 50);
	char *start = (char *)malloc(sizeof(char) * 50);
	char *end = (char *)malloc(sizeof(char) * 50);
	if(NULL == ptr || NULL == start || NULL == end)
	{
		printf("NULL ERROR\n");
		exit(1);
	}
	printf("请输入一串数\n");
	scanf("%s", ptr);
	printf("请输入帧头和帧尾\n");
	scanf("%s%s", start, end);
	//printf("%s\t%s\n", start, end);
	printf("合法字符串为%s\n", Legal(ptr, start, end));
	return 0; 
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值