您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
C语言中如何使用Index定位函数,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
数据结构中定位函数Index的使用方法
实现代码:
#include<stdio.h> #include<string.h> #include<stdlib.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 40 //最大字符串 typedef int Status; typedef char SString[MAXSIZE+1]; //此处声明的SString[maxsize+1]虽是数组,在SubString中作为指针使用, //因位是指针,SString[0]存放实际数组的地址,使用时不用加*或&,直接传入数组的值 /*******************************声明部分****************************************/ Status StrAssign(SString T,char *chars); //生成一个其值等于chars的串T 第一个元素为字符串长度 int StrLength(SString S); //操作结果:返回S的元素个数,成为串的长度 int StrCompare(SString S,SString T); //操作结果:若S>T,则返回值>0;若S = T,则返回值 =0;若S<T,则返回值<0 Status SubString(SString Sub, SString T,int pos,int len); //用Sub返回串T的第pos个字符起长度为len的子串 int Index(SString S,SString T,int pos); //若主串S中存在和串T值相同的子串,则返回它在主串中第pos个字符之后第一次出现的位置;否则函数值为0 /*******************************函数部分****************************************/ Status StrAssign(SString T,char *chars) { int i,ct; for(i = 0;i <= MAXSIZE; i++) T[i] = '\0'; //全部清零 T[0] = strlen(chars); for(ct = 1;*chars != '\0';ct++,chars++){ T[ct] = *chars; } return OK; } int StrLength(SString S) { return S[0]; } int StrCompare(SString S,SString T) { int cnt = 1; while(cnt <= S[0] && cnt <= T[0]){ //非空前提下 if(S[cnt] == T[cnt]){ //相等 cnt++; } else{ //不相等 return S[cnt] - T[cnt]; } } return S[0]-T[0]; } Status SubString(SString Sub, SString T,int pos,int len) { if(pos<1 || pos>T[0] || len<0 || len>T[0]-pos+1) return ERROR; int ct,cnt; for(ct = 1,cnt = pos;cnt <= len+pos;ct++,cnt++){ Sub[ct]=T[cnt]; } Sub[0] = len+1; return OK; } int Index(SString S,SString T,int pos) { SString Sub; int i = pos; if(pos > 0){ int n = StrLength(S),m = StrLength(T); while( i<= n-m+1){ SubString(Sub,S,i,m-1); if(StrCompare(Sub,T)==0) return i; else i++; } }//if printf("不存在\n"); return 0; //S中不存在与T相等的子串 }//Index /*******************************主函数部分**************************************/ int main() { char *chars1 = "abcdefhg"; char *chars2 = "defhg"; SString S,T; StrAssign(S,chars1); StrAssign(T,chars2); int ANSWER = Index(S,T,1); printf("找到子串T在S中的位置 = %d\n",ANSWER); return 0; }
实现效果:
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。