C語言類比實現strstr函數,strrstr 函數

來源:互聯網
上載者:User

標籤:c語言   類比實現   strstr   

 strstr和strrstr已經算是字串中相對比較難的了,但是只要我們善於分析,解剖字串,就會化難為易。其實學習代碼的過程中需要我們靜下心來分析,理解。

 srtstr函數的功能及用法

 原型:char *strstr(const char *dst, const char *src);

#include<string.h>

找出src字串在dst字串中第一次出現的位置(不包括src的串結束符)。返回該位置的指標,如找不到,返回null 指標。

代碼:

#include <stdio.h>#include <string.h>#include <assert.h>char *my_strstr(const char *dst, const char *src){const char *str1 = dst;const char *str2 = src;const char *fast = NULL;assert(dst);assert(src);while (*str1){fast = str1;while (*str1 && *str2 && *str1 == *str2){str1++;str2++;}if (*str2 == ‘\0‘)return (char*)fast;str1 = fast+1;str2 = src;}     return NULL;}int main(){char arr1[] = "abcdefgdefk";char arr2[] = "defk";char *ret = my_strstr(arr1,arr2);if (*ret){puts(ret);}return 0;}

解析代碼:

  在main函數中定義兩個字串數組,char arr1[]="abcdefgdefk";char arr2[]="defk";在調用函數中用指標來接收,指標接收的優點是指標指向字串的首地址,指標最好用const保護起來,以防被破壞。在調用函數中定義三個指標,char *sr1=dst,char* str2=src,char* fast=NULL(避免野指標),使用之前先斷言指標是否存在,如果str1的內容存在進入迴圈,先將fsat=str1;如果str1指向的內容等於str2指向的內容,str1,str2的地址加加,如果str2的內容等於"\0"了,說明str2字串的內容在str1字串中出現,否則str1指向fast指標指向地址的後一個地址,str2返回到它的首地址,繼續執行迴圈直到str2字串在str1中第一次出現。

類比實現strrstr函數

原型:char *strrstr(const char *str1, const char *str2);

#include<string.h>

找出str2字串在str1字串中最後出現的位置(不包括str2的串結束符)。返回該位置的指標,如找不到,返回null 指標。

#include <stdio.h>#include <string.h>#include <assert.h>char *my_strrstr(const char *dst,const char *src){char *str1=dst;char *str2=src;char *fast=NULL;char *last=NULL;assert(dst);assert(src);while (*str1){fast=str1;while (*str1&&*str2&&*str1==*str2){str1++;str2++;}if (*str2 == ‘\0‘)last=fast;str1=fast+1;str2 = src;}if (*str1 == ‘\0‘)return /*(char *)*/last;/*return NULL;*/}int main(){char *Qwe="asdfghasdgfdfgdfgdfgdfgdfg";char *Zaq="dfg";char *ret=my_strrstr(Qwe,Zaq);puts(ret);return 0;}



本文出自 “Dream” 部落格,請務必保留此出處http://12951882.blog.51cto.com/12941882/1976515

C語言類比實現strstr函數,strrstr 函數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.