C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法
數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法
實(shí)現(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ù)組的地址,使用時(shí)不用加*或&,直接傳入數(shù)組的值
/*******************************聲明部分****************************************/
Status StrAssign(SString T,char *chars);
//生成一個(gè)其值等于chars的串T 第一個(gè)元素為字符串長(zhǎng)度
int StrLength(SString S);
//操作結(jié)果:返回S的元素個(gè)數(shù),成為串的長(zhǎng)度
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個(gè)字符起長(zhǎng)度為len的子串
int Index(SString S,SString T,int pos);
//若主串S中存在和串T值相同的子串,則返回它在主串中第pos個(gè)字符之后第一次出現(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;
}
實(shí)現(xiàn)效果:
如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
欄 目:C語言
下一篇:C++數(shù)據(jù)結(jié)構(gòu)之鏈表的創(chuàng)建
本文標(biāo)題:C語言數(shù)據(jù)結(jié)構(gòu)中定位函數(shù)Index的使用方法
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/1072.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
 - 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫(kù)
 - 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
 - 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)數(shù)怎么表達(dá)
 - 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ù)求階乘
 


閱讀排行
- 1C語言 while語句的用法詳解
 - 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
 - 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
 - 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
 - 5c語言計(jì)算三角形面積代碼
 - 6什么是 WSH(腳本宿主)的詳細(xì)解釋
 - 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
 - 8正則表達(dá)式匹配各種特殊字符
 - 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
 - 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
 
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
 - 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
 - 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
 - 04-02c語言用函數(shù)寫分段 用c語言表示分段
 - 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
 - 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ù)求
 
隨機(jī)閱讀
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
 - 04-02jquery與jsp,用jquery
 - 01-10delphi制作wav文件的方法
 - 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
 - 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
 - 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
 - 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
 - 01-10C#中split用法實(shí)例總結(jié)
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
 


