最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語言詳細(xì)講解常用字符串處理函數(shù)

 更新時(shí)間:2022年05月05日 10:19:31   作者:嵌入式宇宙  
在日常編程中,對(duì)于字符串的操作中我們都很習(xí)慣的使用一些C庫(kù)中自帶的函數(shù),并且關(guān)于字符串的操作函數(shù)基本都在 string.h 這個(gè)頭文件中。關(guān)于C庫(kù)字符串常用處理函數(shù)也是平時(shí)面試或者考試過程中非常喜歡考的,本文將帶大家手動(dòng)來實(shí)現(xiàn)這些常用函數(shù)

一、strlen()

1. 函數(shù)原型:

size_t strlen(const char *str)

參數(shù)str: 要計(jì)算的字符串的長(zhǎng)度
返回值: 返回字符串 str 的長(zhǎng)度,直到遇到結(jié)束字符'\0',但不包括結(jié)束字符。
size_t 是一個(gè)無符號(hào)整數(shù)類型。

2. 手動(dòng)實(shí)現(xiàn):

源代碼:

#include <stdio.h>
#include <string.h>
size_t my_strlen(const char *str)
{
    size_t len = 0;
    while (*str++ != '\0') {
        len++;
    }
    return len;
}
int main()
{
    char *p = "hello world";
    int len_1 = 0, len_2 = 0;

    len_1 = my_strlen(p);
    len_2 = strlen(p);
    printf("len_1 = %d, len_2 = %d\n", len_1, len_2);
    return 0;
}

運(yùn)行結(jié)果:

len_1 = 11, len_2 = 11

二、strcat()

1. 函數(shù)原型:

char *strcat(char *dest, const char *src)

參數(shù)1: 目標(biāo)字符串,該空間需要足夠容納后續(xù)追加的字符串。
參數(shù)2: 要追加的字符串。
返回值: 返回指向目標(biāo)字符串的指針。

2. 手動(dòng)實(shí)現(xiàn):

源代碼:

#include <stdio.h>
#include <string.h>
char *my_strcat(char *dest, const char *src)
{
    while (*dest != '\0') {
        dest++;
    }
    while (*src != '\0') {
        *dest++ = *src++;
    }
    *dest = '\0';
    return dest;
}
int main()
{
    char p1[20] = "hello ";
    char p2[20] = "hello ";
    char *q = "world";
    my_strcat(p1, q);
    strcat(p2, q);
    printf("p1 = %s, p2 = %s\n", p1, p2);
    return 0;
}

運(yùn)行結(jié)果:

p1 = hello world, p2 = hello world

三、strcpy()

1. 函數(shù)原型:

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

參數(shù)1: 要存儲(chǔ)的目標(biāo)字符串。
參數(shù)2: 要復(fù)制的字符串。
返回值: 返回指向目標(biāo)字符串的指針。

2. 手動(dòng)實(shí)現(xiàn):

源代碼:

#include <stdio.h>
#include <string.h>
char *my_strcpy(char *dest, const char *src)
{
    while (*src != '\0') {
        *dest++ = *src++;
    }
    *dest = '\0';
    return dest;
}
int main()
{
    char p1[20] = {'\0'};
    char p2[20] = {'\0'};
    char *q = "hello world";
    my_strcpy(p1, q);
    strcpy(p2, q);
    printf("p1 = %s, p2 = %s\n", p1, p2);
    return 0;
}

運(yùn)行結(jié)果:

p1 = hello world, p2 = hello world

四、strcmp()

1. 函數(shù)原型:

int strcmp(const char *str1, const char *str2)

參數(shù)1: 要比較的第一個(gè)字符串
參數(shù)2: 要比較的第二個(gè)字符串
返回值:
    如果返回值 < 0,則表示 str1 小于 str2。
    如果返回值 > 0,則表示 str1 大于 str2。
    如果返回值 = 0,則表示 str1 等于 str2。

2. 手動(dòng)實(shí)現(xiàn):

源代碼:

#include <stdio.h>
#include <string.h>
int my_strcmp(const char *str1, const char *str2)
{
    int ret = 0;
    while ((*str1 != '\0') && (*str1 == *str2)) {
        str1++;
        str2++;
    }
    ret = *str1 - *str2;
    return ret;
}
int main()
{
    char p1[20] = {"hello world"};
    char p2[20] = {"hello aorld"};
    int ret_1, ret_2;
    ret_1 = my_strcmp(p2, p1);
    ret_2 = strcmp(p2, p1);
    printf("ret_1 = %d, ret_2 = %d\n", ret_1, ret_2);
    return 0;
}

運(yùn)行結(jié)果:

ret_1 = -22, ret_2 = -22

五、memset()

1. 函數(shù)原型:

void *memset(void *str, int c, size_t n)

參數(shù)1: 要設(shè)置的內(nèi)存塊
參數(shù)2: 要填充的值,在填充內(nèi)存塊時(shí)是使用該值的無符號(hào)字符形式。
參數(shù)3: 填充的字符個(gè)數(shù)。
返回值: 返回指向str的指針。

2. 手動(dòng)實(shí)現(xiàn):

源代碼:

#include <stdio.h>
#include <string.h>
void *my_memset(void *str, int c, size_t n)
{
    if (str == NULL) 
        return NULL;
    char *pstr = (char*)str;
    while (n-- > 0) {
        *pstr++ = c ;
    }
    return str;
}
int main()
{
    char p1[20] = {"hello world"};
    char p2[20] = {"hello world"};
    my_memset(p1, '*', 5);
    memset(p2, '*', 5);
    printf("p1 = %s, p2 = %s\n", p1, p2);
    return 0;
}

運(yùn)行結(jié)果:

p1 = ***** world, p2 = ***** world

到此這篇關(guān)于C語言詳細(xì)講解常用字符串處理函數(shù)的文章就介紹到這了,更多相關(guān)C語言字符串函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • OpenCV中的cv::Mat函數(shù)將數(shù)據(jù)寫入txt文件

    OpenCV中的cv::Mat函數(shù)將數(shù)據(jù)寫入txt文件

    這篇文章主要介紹了OpenCVcv::Mat中的數(shù)據(jù)按行列寫入txt文件中,需要的朋友可以參考下
    2018-05-05
  • c++調(diào)用python實(shí)現(xiàn)圖片ocr識(shí)別

    c++調(diào)用python實(shí)現(xiàn)圖片ocr識(shí)別

    所謂c++調(diào)用python,實(shí)際上就是在c++中把整個(gè)python當(dāng)作一個(gè)第三方庫(kù)引入,然后使用特定的接口來調(diào)用python的函數(shù)或者直接執(zhí)行python腳本,本文介紹的是調(diào)用python實(shí)現(xiàn)圖片ocr識(shí)別,感興趣的可以了解下
    2023-09-09
  • QT實(shí)現(xiàn)簡(jiǎn)單打地鼠游戲

    QT實(shí)現(xiàn)簡(jiǎn)單打地鼠游戲

    這篇文章主要為大家詳細(xì)介紹了QT實(shí)現(xiàn)簡(jiǎn)單打地鼠游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • c++ vector對(duì)象相關(guān)總結(jié)

    c++ vector對(duì)象相關(guān)總結(jié)

    這篇文章主要介紹了c++ vector對(duì)象的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用c++,感興趣的朋友可以了解下
    2021-02-02
  • 深入了解一下C語言中的柔性數(shù)組

    深入了解一下C語言中的柔性數(shù)組

    柔性數(shù)組是在C99中定義的,即結(jié)構(gòu)體的最后一個(gè)元素允許是未知大小的數(shù)組,這就叫柔性數(shù)組。這篇文章將通過簡(jiǎn)單的示例為大家介紹一下柔性數(shù)組的使用,感興趣的可以了解一下
    2023-02-02
  • C++ Struct結(jié)構(gòu)體用法淺析

    C++ Struct結(jié)構(gòu)體用法淺析

    前邊我們所定義的類,均是使用struct關(guān)鍵字來定義,但是C++中真正用于定義類的關(guān)鍵字為class,因?yàn)橐狢++兼容C,所以保留struct關(guān)鍵字,struct與class的用法完全相同
    2023-03-03
  • C++實(shí)現(xiàn)順序排序算法簡(jiǎn)單示例代碼

    C++實(shí)現(xiàn)順序排序算法簡(jiǎn)單示例代碼

    這篇文章主要介紹了C++實(shí)現(xiàn)順序排序算法簡(jiǎn)單示例代碼,對(duì)于學(xué)過C++的朋友一定不會(huì)陌生,現(xiàn)在重溫一下這個(gè)算法,需要的朋友可以參考下
    2014-08-08
  • C語言結(jié)構(gòu)體鏈表和指針實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    C語言結(jié)構(gòu)體鏈表和指針實(shí)現(xiàn)學(xué)生管理系統(tǒng)

    這篇文章主要介紹了C語言結(jié)構(gòu)體鏈表和指針實(shí)現(xiàn)學(xué)生管理系統(tǒng),包括學(xué)生檔案管理子系統(tǒng)和學(xué)生成績(jī)管理子系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • OpenCV透視變換應(yīng)用之書本視圖矯正+廣告屏幕切換

    OpenCV透視變換應(yīng)用之書本視圖矯正+廣告屏幕切換

    透視變換是指利用透視中心、像點(diǎn)、目標(biāo)點(diǎn)三點(diǎn)共線的條件,按透視旋轉(zhuǎn)定律使承影面繞跡線旋轉(zhuǎn)某一角度,破壞原有的投影光線束,仍能保持承影面上投影幾何圖形不變的變換。本文將為大家介紹兩個(gè)OpenCV透視變換應(yīng)用,需要的可以參考一下
    2022-08-08
  • C語言實(shí)現(xiàn)校運(yùn)動(dòng)會(huì)項(xiàng)目管理系統(tǒng)

    C語言實(shí)現(xiàn)校運(yùn)動(dòng)會(huì)項(xiàng)目管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)校運(yùn)動(dòng)會(huì)項(xiàng)目管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評(píng)論

丽江市| 濮阳市| 乌兰浩特市| 十堰市| 卓尼县| 巴塘县| 丹棱县| 平乡县| 黑水县| 肥城市| 砀山县| 阳城县| 蓬溪县| 龙游县| 科技| 兰坪| 沐川县| 海安县| 灵武市| 北流市| 陵川县| 莱阳市| 巍山| 宁化县| 平陆县| 沁阳市| 雅江县| 达拉特旗| 普格县| 左权县| 延吉市| 民丰县| 山东| 仁寿县| 军事| 望江县| 治县。| 河东区| 曲麻莱县| 东港市| 舞钢市|