您的位置:首页 > 其它

在字符串中查找子字符串的算法

2006-05-19 15:08 253 查看
#include <stdio.h>

int strlen(char *str)
{
int i;

for ( i = 0; str[i] != '/0'; i++ ); /* 用循环计算长度 */
return i;
}

/* ---------------------------------------- */
/* 在字符串中找寻子字符串 */
/* ---------------------------------------- */
int strindex(char *str,char *substr)
{
int end,i,j;

end = strlen(str) - strlen(substr); /* 计算结束位置 */
if ( end > 0 ) /* 子字符串小于字符串 */
{
for ( i = 0; i <= end; i++ )
/* 用循环比较 */
for ( j = i; str[j] == substr[j-i]; j++ )
if ( substr[j-i+1] == '/0' ) /* 子字符串字结束 */
return i + 1; /* 找到了子字符串 */
}
return -1;
}

/* ---------------------------------------- */
/* 主程式: 在字符串中找寻子字符串出现位置. */
/* ---------------------------------------- */
void main()
{
char string[100]; /* 字符串阵列宣告 */
char substring[100]; /* 子字符串阵列宣告 */
int result; /* 找寻结果 */

printf("请输入字符串 ==> ");
gets(string); /* 读取字符串 */
printf("请输入要搜索的子字符串 ==> ");
gets(substring); /* 读取子字符串 */
result = strindex(string,substring); /* 搜寻子字符串 */
if ( result > 0 )
printf("子字符串 %s 位置在 %d/n",substring,result);
else
printf("没有找到子字符串 %s/n",substring);
getchar();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: