亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

C語言實現字符串操作函數的實例

2020-01-26 13:58:01
字體:
來源:轉載
供稿:網友

C語言實現字符串操作函數的實例

在編寫程序的過程中,我們經常使用到一些字符串函數,例如求字符串長度,拷貝字符串……,這些函數都在C標準庫中存在,我們可以直接使用。但我們還需要掌握這些函數的實現方法,今天來看看一些常用的字符串操作函數的實現方法。

1.strlen

strlen是用來求字符串長度的函數,字符串長度就是它所包含的字符個數。

今天給大家介紹三種實現strlen函數的方法

(1)定義一個計數器count

//方式一:定義一個計數器size_t my_strlen(const char *str){  int count = 0;     while (*str)  {    count++;         str++;  }  return count;}

(2)遞歸實現

size_t my_strlen(const char *str){  if (*str == '/0')    return 0;  else    return my_strlen(str + 1) + 1;}

(3)利用指針-指針

size_t my_strlen(const char *str){  const char *end = str;  while (*end++)  {    ;  }  return end - str - 1;}

2.strcpy

用于復制字符串的函數是strcpy,它的原型如下:

char *strcpy(char *dest, const char *src);

使用這個函數時,要注意幾點

(1)、目標字符數組的空間必須足夠大,足以容納需要復制的字符串
(2)、目標字符數組要可以被修改
(3)、被復制的字符串要可以找到'/0'

char *my_strcpy(char *dest, const char *src){  char *tmp = dest;  assert(dest);  assert(src);  while (*dest++ = *src++)  {    ;  }  return tmp;}

3.strcat

strcat函數是可以把一個字符串添加(連接)到另一個字符串的后面。strcat函數要求dest參數原先已經包含了一個字符串(可以是空字符串)。它找到這個字符串的末尾,并把src字符串的一份拷貝添加到這個位置。

char *my_strcat(char *dest, const char *src){  char *ret = dest;  assert(dest);  assert(src);  while (*dest != '/0')  {    dest++;  }  while (*dest++ = *src++)  {    ;  }  return ret;}

4.strcmp

strcmp用于比較兩個字符串,及對兩個字符串對應的字符逐個進行比較,直到發現不匹配。那個最先不匹配的字符中較“小”的那個字符所在的字符串被認為“小于”另外一個字符串。如果其中一個字符串是另外一個字符串的前面一部分,那么它也被認為“小于”另外一個字符串,因為它的'/0'出現的更早。需要注意的是,strcmp函數對于只包含大寫字母或只包含小寫字母的字符串比較。

int my_strcmp(const char *src1, const char *src2){  while (*src1 == *src2)  {    if (*src1 == '/0')      return 0;    src1++;    src2++;  }  return *src1 - *src2;}

5.strstr

為了在一個字符串中查找一個子串,可以使用strstr函數,該函數實在s1中查找整個s2第1次出現的起始位置,并返回一個指向該位置的指針。如果s2并沒有出現在s1的任何地方,函數將返回一個NULL指針。如果第二個函數是一個空字符串,函數就返回s1。

char *my_strstr(const char* s1, const char* s2){  const char *p = s1;  const char *q = s2;  const char *cur = NULL;  assert(s1);  assert(s2);  if (*s2 == '/0')    return s1;  while (*p)  {    cur = p;    while ((*p) && (*q) && (*p == *q))    {      p++;      q++;    }    if (*q == '/0')      return cur;    p = cur + 1;    q = s2;  }  return NULL;}

6.strchr

strchr是用來查找一個特定的字符,在字符串str中查找字符ch第一次出現的位置,找到后函數返回一個指向該位置的指針。如果該字符并不存在于字符串中,函數就返回一個NULL指針。

char *my_strchr(char const *str, int ch){  const char *tmp = str;  while (*tmp)  {    if (*tmp == ch)    {      return tmp;    }    tmp++;  }  return NULL;}

7.strrchr

與strchr類似的查找函數還有一個是strrchr,它和strchr的不同之處在于,該函數返回的是一個指向字符串中該字符最后一次出現的位置

char* my_strrchr(const char* str, int ch){  char* pos = 0;  assert(str);  while (*str)  {    if (*str == ch)    {      pos = str;    }    str++;  }  if (pos != 0)  {    return pos;  }  else    return NULL;}

長度受限制的字符串函數

標準庫中還包含一些函數,它們以一種不同的方式去處理字符串。這些函數接受一個顯示的長度參數,用于限定進行復制或比較的字符數。

1.strncpy

和strcpy一樣,strncpy把源字符串的字符復制到目標空間,但是,它總是正好向dest中拷貝len個字符,如果strlen(src)的值小于len,dest數組就用額外的'/0'填充到len字節長度。如果strlen(src)的值大于或等于len,那么只有len個字符被復制到dest中。

char *my_strncpy(char *dest, const char *src, size_t len){  char *ret = dest;  size_t i = 0;  assert(dest);  assert(src);  while (len--)  {    *ret++ = *src++;  }  if (*(ret) != '/0')  {    *ret = '/0';  }  return dest;}

2.strncat

strncat,它從src中最多復制len個字符到目標數組的后面。

char *my_strncat(char *dst, const char *src, size_t len){  char *ret = dst;  assert(dst);  assert(src);  while (*dst != '/0')  {    dst++;  }  while (len--)  {    *dst = *src;    dst++;    src++;  }  return ret;}

3.strncmp

strncmp也用于比較兩個字符串,但它最多比較len個字節。如果兩個字符串在第len個字符之前存在不相等的字符,這個函數就像strcmp一樣停止比較,返回結果。如果兩個字符串的前len個字符相等,函數就返回零。

int my_strncmp(char const *s1, char const *s2, size_t len){  assert(s1);  assert(s2);  while (len--)  {      if (*s1 == *s2)      {        s1++;        s2++;      }      else      {        return *s1 - *s2;      }  }    return 0;}

標準庫里的字符串函數還有很多,今天就先介紹到這里。

以上就是C語言字符串的操作總結 ,如有疑問,請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
免费av在线一区| 色综合天天狠天天透天天伊人| 久久中文久久字幕| 国产欧美日韩精品在线观看| 一区二区三区回区在观看免费视频| 欧美做受高潮电影o| 久久色精品视频| 国产中文日韩欧美| 亚洲色图狂野欧美| 91av在线免费观看视频| 久久999免费视频| 国产精品丝袜视频| 久久久久久久久久久亚洲| 色偷偷91综合久久噜噜| 国产中文字幕91| 日韩高清av一区二区三区| 精品magnet| 亚洲大胆人体av| 国产大片精品免费永久看nba| 亚洲国产精品小视频| 最好看的2019的中文字幕视频| 欧美精品电影在线| 丝袜情趣国产精品| 欧美亚洲另类视频| 庆余年2免费日韩剧观看大牛| 国产欧美日韩综合精品| 国产精品日韩在线一区| 丰满岳妇乱一区二区三区| 欧美性猛交xxxx偷拍洗澡| 91精品国产电影| 亚洲免费中文字幕| 亚洲www在线观看| 91在线色戒在线| 中文字幕亚洲欧美在线| 日韩久久精品电影| 久久人人看视频| 亚洲黄色成人网| 在线国产精品视频| 成人免费观看49www在线观看| 国产在线观看不卡| 中文字幕国产亚洲2019| 国产精品久久久999| 亚洲精品国产综合久久| 亚洲女人被黑人巨大进入al| 欧洲中文字幕国产精品| 国产精品精品一区二区三区午夜版| 26uuu久久噜噜噜噜| 久久精品久久久久久国产 免费| 中文字幕少妇一区二区三区| 亚洲成av人乱码色午夜| 久久99国产精品久久久久久久久| 日韩欧美在线视频免费观看| 中文字幕日韩av| 亚洲国产精品成人一区二区| 日韩在线观看高清| 日韩成人在线免费观看| 狠狠综合久久av一区二区小说| 在线成人激情黄色| 久久久成人精品| 欧美日韩国产黄| 久久久久久久国产精品视频| 国产日产久久高清欧美一区| 亚洲成人激情在线| 日本午夜精品理论片a级appf发布| 国产精品都在这里| 国产精品一区二区电影| 亚洲一区二区三区乱码aⅴ| 久久露脸国产精品| 久久久人成影片一区二区三区观看| 在线播放国产精品| 91久久久久久久久久久久久| 91中文精品字幕在线视频| 欧美体内谢she精2性欧美| 国产精品爱久久久久久久| 亚洲在线免费观看| 久久久亚洲欧洲日产国码aⅴ| 欧美肥臀大乳一区二区免费视频| 亚洲黄色免费三级| 日韩精品亚洲精品| 久久久久久久久久久av| 中文综合在线观看| 午夜精品一区二区三区在线播放| 久久久久久中文字幕| 国产精品日韩在线播放| 国产一区红桃视频| 国产乱肥老妇国产一区二| 中文字幕日韩在线观看| 8090成年在线看片午夜| 欧美自拍视频在线| 国产精品美女视频网站| 久久影视免费观看| 欧美日韩精品在线观看| 国产免费一区二区三区在线观看| 欧美电影免费观看| 久久久久久亚洲精品中文字幕| 亚洲图中文字幕| 日韩av电影中文字幕| 国产精品免费一区豆花| 国产精品夜色7777狼人| 久久五月天综合| 91在线视频精品| 91久久精品视频| 日韩二区三区在线| 91亚洲精华国产精华| 欧美性xxxx| 国产亚洲欧美日韩美女| 日韩一区二区三区在线播放| 色妞色视频一区二区三区四区| 亚洲欧美国产精品| 久久99热这里只有精品国产| 欧美亚洲国产视频小说| 日韩欧美黄色动漫| 亚洲人成自拍网站| 国产欧美va欧美va香蕉在线| 91久久精品国产91久久性色| 亚洲美女免费精品视频在线观看| 亚洲人午夜色婷婷| 欧美一区二区大胆人体摄影专业网站| 欧美久久精品一级黑人c片| 精品国产一区二区三区久久久狼| 国自产精品手机在线观看视频| 国产欧美日韩综合精品| 国产日韩在线精品av| 国产欧美中文字幕| 亚洲一区二区三区在线免费观看| 性欧美xxxx| 亚洲欧美精品伊人久久| 一区二区欧美在线| 国产成人黄色av| 国产成人精品免高潮费视频| 国产一区二区三区视频| 亚洲视频axxx| 日韩精品在线免费播放| 亚洲国产精品成人精品| 色妞欧美日韩在线| 中文字幕日本欧美| 一区二区三区亚洲| 亚洲爱爱爱爱爱| 日韩中文av在线| 两个人的视频www国产精品| 久久久久久久色| 日本亚洲欧美三级| 国产一区深夜福利| 久色乳综合思思在线视频| 日本亚洲欧美三级| 国产女人18毛片水18精品| 成人在线视频网站| 亚洲精品短视频| 国产精品视频区1| 久久久久久亚洲精品中文字幕| 久久天堂av综合合色| 欧美精品videofree1080p| 国产欧美精品xxxx另类| 成人网址在线观看| 亚洲综合中文字幕在线| 欧美丝袜一区二区| 一区二区三区四区视频| 成人乱色短篇合集| 国产精品久久久久久av福利软件| 国产极品jizzhd欧美| 国内精品久久久久影院 日本资源| 欧美大肥婆大肥bbbbb| 国产精品三级美女白浆呻吟| 欧美激情在线播放|