4.cpp

来自「C++的电子教程」· C++ 代码 · 共 50 行

CPP
50
字号
//从字符串s1中第i个字符起求出首次与字符串r2相同的子串的起始位置。
//本题和例4_8相同
#include <stdio.h>

//求串长
int strlen(char *s)  /* int Strlen(char s[]) */
{
	int i;
	for(i=0;s[i]!='\0';i++);
	return i;
}


//串的模式匹配
int strindex(char *s,char *s1,int pos)
{	int n,m,i,j;
	n=strlen(s);
	m=strlen(s1);
	for(i=pos-1;i<=n-m;i++)
	{	for(j=0;s[i+j]==s1[j] && j<m;j++);  //从各位置查找
		if(j==m) return(i);
	}
	return -1;
}



void main()
{
	char s1[20];
	char r2[20];
	int pos;                      //起始位置
	int result;

	printf("请输入字符串==>");
	gets(s1);                     //读取字符串
	printf("请输入要寻找字符串==>");
	gets(r2);                     //读取字符串
	printf("请输删除起始位置==>");
    scanf("%d",&pos);             //读取位置

    result=strindex(s1,r2,pos);        //匹配结果
	if (result>=0)
	{
		printf("匹配成功\n");
		printf("字符串 %s 位置在%d\n",r2,result+1);    //数组开始下标为0,结果加1
	}
	else 
	    printf("匹配不成功\n");
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?