两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1. 基本介紹

在程序設(shè)計中,字符串操作是必不可缺的,無論是工程設(shè)計還是算法設(shè)計均離不開字符串,字符串是由一個個單獨的字符構(gòu)成的串,其數(shù)據(jù)結(jié)構(gòu)是線性的,常以ASCII碼表示,同時只要設(shè)定得當(dāng),其展示任何一種編碼也都是可以的。

字符串有很多的操作,也有非常多的擴展算法,本文從設(shè)計的角度介紹這些基本的字符串操作以及其實現(xiàn)代碼,本文實現(xiàn)的大多數(shù)代碼諸如C和C++中的頭文件<string.h>(C++則是<cstring>)已經(jīng)封裝好了相應(yīng)的函數(shù)和方法可以直接使用。

2. 獲取字符串長度

顧名思義,指獲取一個字符串的長度,在C語言中我們可以直接用strlen(str)來表示,其實現(xiàn)思路可以直接使用一個循環(huán),對每一個字符進行計數(shù),當(dāng)循環(huán)遇到字符’\0’即結(jié)束符時循環(huán)結(jié)束,返回這個循環(huán),示例代碼如下:

#include<stdio.h>
 
int _strlen(char str[]){
    int i=0;
    for(i=0;str[i]!='\0';i++){}
    return i;
}
 
int main(){
    char *str = "Hello My DotCpp.com";
    int len = _strlen(str);
    printf("%d",len);
    return 0;
}

輸出19

3. 字符位置獲取

給定一個字符,獲取這個字符串中首次出現(xiàn)這個字符的位置,如果沒有找到則給與一個錯誤信號,如給定一個hello,要求找出l的位置,那么將會找到位置3 ,C語言中可以使用strchr(str,c)表示,實現(xiàn)示例代碼如下:

#include<stdio.h>
 
int _charAt(char str[],char c){
    int i=0;
    for(i=0;str[i]!='\0'&&str[i]!=c;i++){}
    return i;
}
 
int main(){
    char *str = "Hello My DotCpp.com";
 
    int way = _charAt(str,'l');
    printf("%d",way);
 
    return 0;
}

輸出3

擴展練習(xí):如果需要你創(chuàng)建一個函數(shù),獲取這個字符串中所有出現(xiàn)這個字符的位置,又該如何去設(shè)計呢?

 

4. 拆分子串操作substr

顧名思義,substr對一個字符串進行拆分,也可以稱之為對一個字符串的某一段進行截取,如一個字符串的長度有0~n,改操作就是取其中i~j的位置,使其重新生成一個新的字符串,獲取的就是這個字符串,在C語言中沒有相關(guān)的操作,在不同的教程中這樣的操作也有不同的命名,本文將此操作命名未substr(在某些別的資料中substr操作則為查找操作),本實現(xiàn)示例代碼如下(注意拆分時需要補充結(jié)束符’\0’):

#include<stdio.h>
 
char *_substr(char str[],int i,int j){
    int pos=0;
    char *backup;
    while(i<j){
        backup[pos++] = str[i++];
    }
    backup[pos]='\0';
    return backup;
}
 
int main(){
    char *str = "Hello My DotCpp.com";
 
    char *newstr = _substr(str,0,5);
 
    printf("%s",newstr);
 
    return 0;
}

輸出Hello

 

5. 拆分子串操作prefix

如同上文的操作,截取操作變?yōu)榱酥唤厝∽址那癿個字符,組成一個全新的字符串,本實現(xiàn)示例代碼如下(注意拆分時需要補充結(jié)束符’\0’):。

#include<stdio.h>
 
char *_prefix(char str[],int m){
    int pos=0,i;
    char *backup;
    for(i=0 ;i<m ;i++){
        backup[pos++] = str[i];
    }
    backup[pos]='\0';
    return backup;
}
 
int main(){
    char *str = "Hello My DotCpp.com";
 
    char *newstr = _prefix(str,5);
 
    printf("%s",newstr);
 
    return 0;
}

輸出Hello

 

6. 拆分子串操作suffix

如同上文的操作,截取操作變?yōu)榱酥唤厝∽址暮髆個字符,組成一個全新的字符串,本實現(xiàn)示例代碼如下(注意拆分時需要補充結(jié)束符’\0’):

這里需要稍微注意一下,在創(chuàng)建字符串的時候,由于各種標(biāo)準(zhǔn)的C對語法的支持不太一樣,這里采用較為舊的方式實現(xiàn),即直接分配一個相應(yīng)的內(nèi)存空間,這與上面的做法稍微不同,如果采用char *backup的創(chuàng)建方式,將會產(chǎn)生內(nèi)存錯誤問題,這個問題原理較為晦澀,有能力的同學(xué)可以參考資料自行理解,這里為了避免沖突簡化了操作。

#include<stdio.h>
 
char *_suffix(char str[],int m){
    int len=0;
    for(;str[len]!='\0';len++){}   
    //獲取字符串總長度(避免使用其他封裝函數(shù),自行設(shè)計時可以使用strlen替代)
 
    printf("%d\n",len-m);
 
    int pos=0,i;
    char backup[500];
    for(i=len-m ;i<len ;i++){
        backup[pos++] = str[i];
    }
    backup[pos]='\0';
    return backup;
}
 
int main(){
    char *str = "Hello My DotCpp.com";
 
    char *newstr = _suffix(str,3);
 
    printf("%s",newstr);
 
    return 0;
}

輸出com


點贊(1)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:

一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運行等待時間)