91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中如何使用Index定位函數

發布時間:2021-07-02 17:35:36 來源:億速云 閱讀:183 作者:Leah 欄目:編程語言

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;
}

實現效果:

C語言中如何使用Index定位函數

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

文化| 华亭县| 寿宁县| 邹平县| 军事| 古蔺县| 得荣县| 郓城县| 九江县| 唐河县| 闸北区| 阿克苏市| 罗城| 乳山市| 黑山县| 镇康县| 宣城市| 大渡口区| 伊春市| 宜州市| 汉沽区| 临湘市| 吉木萨尔县| 台前县| 那曲县| 义乌市| 安丘市| 平陆县| 丰镇市| 清河县| 公主岭市| 通城县| 浦城县| 通榆县| 永城市| 沛县| 呼和浩特市| 衢州市| 咸阳市| 柘城县| 旅游|