C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法
數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法
實現(xiàn)代碼:
#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]雖是數(shù)組,在SubString中作為指針使用, //因位是指針,SString[0]存放實際數(shù)組的地址,使用時不用加*或&,直接傳入數(shù)組的值 /*******************************聲明部分****************************************/ Status StrAssign(SString T,char *chars); //生成一個其值等于chars的串T 第一個元素為字符串長度 int StrLength(SString S); //操作結(jié)果:返回S的元素個數(shù),成為串的長度 int StrCompare(SString S,SString T); //操作結(jié)果:若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個字符之后第一次出現(xiàn)的位置;否則函數(shù)值為0 /*******************************函數(shù)部分****************************************/ 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 /*******************************主函數(shù)部分**************************************/ 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; }
實現(xiàn)效果:
如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
欄 目:C語言
下一篇:C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建
本文標題:C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1072.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-11ajax實現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10C#中split用法實例總結(jié)
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05織夢dedecms什么時候用欄目交叉功能?