色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語(yǔ)言string.h中的庫(kù)函數(shù)有哪些?

冬至子 ? 來(lái)源:小李的創(chuàng)客實(shí)驗(yàn)室 ? 作者:初出茅廬的小李 ? 2023-07-08 16:38 ? 次閱讀

C語(yǔ)言字符數(shù)組與字符串?dāng)?shù)組

在C語(yǔ)言中,字符數(shù)組字符串?dāng)?shù)組實(shí)際上是同一種類型。字符串是由字符組成的字符數(shù)組,通常以空字符 '\\0' 結(jié)尾。C語(yǔ)言中的字符串是一種常見(jiàn)的數(shù)據(jù)類型。我們可以通過(guò)兩種方式定義字符數(shù)組跟字符串?dāng)?shù)組

char charArray[10];               // 定義一個(gè)包含10個(gè)字符的字符數(shù)組
char strArray[10] = "Hello";      // 定義并初始化一個(gè)字符串?dāng)?shù)組

常用函數(shù)之strlen()函數(shù)

strlen 是 C 語(yǔ)言中的一個(gè)字符串函數(shù),用于計(jì)算字符串的長(zhǎng)度,即字符串中字符的個(gè)數(shù)(注意它是不包括結(jié)尾的空字符 '\\0')。

函數(shù)原型如下:

size_t strlen(const char *str);

參數(shù) str 是一個(gè)指向以空字符 '\\0' 結(jié)尾的字符串的指針。函數(shù)返回一個(gè) size_t 類型的值,表示字符串的長(zhǎng)度。

以下是一個(gè)使用 strlen 函數(shù)的示例代碼:

#include < stdio.h >
#include < string.h >

int main(void) 
{
    char str[] = "Hello, World!";
    size_t length = strlen(str);
    printf("Length of the string: %zu\\n", length);
    return0;
}

在上述示例中,我們定義了一個(gè)字符串 str,并使用 strlen 函數(shù)計(jì)算字符串的長(zhǎng)度,將結(jié)果保存在變量 length 中。最后,使用 printf 函數(shù)打印字符串的長(zhǎng)度。

輸出結(jié)果為:

Length of the string: 13

注意,strlen 函數(shù)返回的長(zhǎng)度不包括結(jié)尾的空字符 '\\0'。所以對(duì)于上述示例中的字符串 "Hello, World!",雖然實(shí)際占用的字符數(shù)為 13,但 strlen 函數(shù)返回的結(jié)果是 13,而不是 14。這是因?yàn)?C 語(yǔ)言中的字符串以空字符 '\\0' 結(jié)尾,作為字符串的結(jié)束標(biāo)志。

5個(gè)字母+1個(gè)逗號(hào) + 1個(gè)空格 + 5個(gè)字母+1個(gè)感嘆號(hào) = 13個(gè)字節(jié)

常用函數(shù)之strcpy()函數(shù)

strcpy 是 C 語(yǔ)言中的一個(gè)字符串函數(shù),用于將一個(gè)字符串復(fù)制到另一個(gè)字符串中。

函數(shù)原型如下:

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

參數(shù) dest 是目標(biāo)字符串的指針,src 是源字符串的指針。函數(shù)將源字符串的內(nèi)容復(fù)制到目標(biāo)字符串中,并返回指向目標(biāo)字符串的指針。//后面的字符串被復(fù)制到前面的那個(gè)字符串 并返回指向的目標(biāo)字符串指針

以下是一個(gè)使用 strcpy 函數(shù)的示例代碼:

#include < stdio.h >
#include < string.h >

int main(void)
{
    char src[] = "Hello";
    char dest[10];
    strcpy(dest, src);
    printf("Copied string: %s\\n", dest);
    return0;
}

在上述示例中,我們定義了一個(gè)源字符串 src,內(nèi)容為 "Hello",以及一個(gè)目標(biāo)字符串 dest,大小為 10。使用 strcpy 函數(shù)將源字符串的內(nèi)容復(fù)制到目標(biāo)字符串中。最后,使用 printf 函數(shù)打印目標(biāo)字符串的內(nèi)容。

輸出結(jié)果為:

Copied string: Hello

注意,在使用 strcpy 函數(shù)時(shí),需要確保目標(biāo)字符串的緩沖區(qū)足夠大以容納源字符串的內(nèi)容。否則,可能會(huì)導(dǎo)致緩沖區(qū)溢出的錯(cuò)誤。此外,確保源字符串以空字符 '\\0' 結(jié)尾,以便 strcpy 函數(shù)正確復(fù)制整個(gè)字符串。

常用函數(shù)之strcmp()函數(shù)

strcmp 是 C 語(yǔ)言中的一個(gè)字符串函數(shù),用于比較兩個(gè)字符串是否相等。

函數(shù)原型如下:

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

參數(shù) str1str2 是兩個(gè)要比較的字符串的指針。函數(shù)返回一個(gè)整數(shù)值,表示比較結(jié)果的大小關(guān)系:

  • 如果 str1str2 相等,則返回 0。
  • 如果 str1 按字典順序小于 str2,則返回負(fù)數(shù)。
  • 如果 str1 按字典順序大于 str2,則返回正數(shù)。

什么是按照字典排序呢?

按字典順序是一種基于字母字符的比較方式,類似于字典中單詞的排列順序。在 C 語(yǔ)言中,字符串的比較操作是按照字典順序進(jìn)行的。

字典順序比較的規(guī)則如下:

  1. 比較字符串中對(duì)應(yīng)位置的第一個(gè)字符。
  2. 如果兩個(gè)字符不相等,那么根據(jù)它們的 ASCII 值來(lái)確定它們的大小關(guān)系。較小的字符被認(rèn)為是在字典中 較早的位置 ,較大的字符被認(rèn)為是在字典中 較后的位置
  3. 如果兩個(gè)字符相等,則繼續(xù)比較下一個(gè)字符,直到找到不相等的字符或遇到字符串的結(jié)尾(即遇到空字符 '\\0')。
  4. 如果其中一個(gè)字符串到達(dá)結(jié)尾而另一個(gè)字符串還有剩余字符,則被認(rèn)為到達(dá)結(jié)尾的字符串較小。

以下是一些示例,幫助理解按字典順序比較字符串的結(jié)果:

  • "apple" 按字典順序小于 "banana",因?yàn)?'a' 比 'b' 小。ASCII碼值小
  • "cat" 按字典順序大于 "dog",因?yàn)?'c' 比 'd' 大。
  • "hello" 按字典順序等于 "hello",因?yàn)槊總€(gè)對(duì)應(yīng)位置的字符都相等。
  • "open" 按字典順序大于 "office",因?yàn)樵诘谝粋€(gè)字符 'o' 相等的情況下,第二個(gè)字符 'p' 比 'f' 大。

需要注意的是,字母的大小比較是基于其對(duì)應(yīng)的 ASCII 值進(jìn)行的。在 ASCII 編碼中,小寫字母的 ASCII 值比大寫字母的 ASCII 值大*。因此,在按字典順序比較字符串時(shí),大寫字母會(huì)被認(rèn)為是在相應(yīng)小寫字母之前。*

理解按字典順序比較字符串的概念對(duì)于正確使用字符串比較函數(shù)(如 strcmp)以及處理字符串排序等操作非常重要。

以下是一個(gè)使用 strcmp 函數(shù)的示例代碼:

#include < stdio.h >
#include < string.h >

int main(void) 
{
    char str1[] = "Hello";
    char str2[] = "World";

    int result = strcmp(str1, str2);

    if (result == 0) 
    {
        printf("Strings are equal.\\n");
    } 
    elseif (result < 0) 
    {
        printf("str1 is less than str2.\\n");
    } 
    else
    {
        printf("str1 is greater than str2.\\n");
    }

    return0;
}

在上述示例中,我們定義了兩個(gè)字符串 str1str2,分別賦值為 "Hello" 和 "World"。使用 strcmp 函數(shù)比較這兩個(gè)字符串,并將結(jié)果保存在變量 result 中。然后根據(jù)比較結(jié)果打印相應(yīng)的消息。

輸出結(jié)果為:

str1 is less than str2.

在此示例中,由于 "Hello" 按字典順序小于 "World",所以 strcmp 函數(shù)返回一個(gè)負(fù)數(shù)值,表明 str1 小于 str2。根據(jù)返回的結(jié)果,我們輸出了相應(yīng)的消息。

需要注意的是,strcmp 函數(shù)是區(qū)分大小寫的。如果要執(zhí)行不區(qū)分大小寫的字符串比較,可以使用 strcasecmp 函數(shù)(在一些編譯器中可能稱為 _stricmp)。

這是在dev的string.h一段代碼 它支持strcasecmp 以及_stricmp
#ifndef __CRT__NO_INLINE
  __CRT_INLINE int __cdecl strncasecmp (const char *__sz1, const char *__sz2, size_t __sizeMaxCompare) { return _strnicmp (__sz1, __sz2, __sizeMaxCompare); }
  __CRT_INLINE int __cdecl strcasecmp (const char *__sz1, const char *__sz2) { return _stricmp (__sz1, __sz2); }
#else
#define strncasecmp _strnicmp
#define strcasecmp _stricmp
#endif /* !__CRT__NO_INLINE */

常用函數(shù)之strcat()函數(shù)

strcat 是 C 語(yǔ)言中的一個(gè)字符串函數(shù),用于將一個(gè)字符串連接到另一個(gè)字符串的末尾。

函數(shù)原型如下:

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

參數(shù) dest 是目標(biāo)字符串的指針,src 是源字符串的指針。函數(shù)將源字符串的內(nèi)容連接到目標(biāo)字符串的末尾,并返回指向目標(biāo)字符串的指針。

以下是一個(gè)使用 strcat 函數(shù)的示例代碼:

#include < stdio.h >
#include < string.h >

int main(void)
{
    char str1[20] = "Hello";
    char str2[] = ", World!";

    strcat(str1, str2);
    printf("Concatenated string: %s\\n", str1);

    return0;
}

在上述示例中,我們定義了一個(gè)目標(biāo)字符串 str1,大小為 20,并初始化為 "Hello"。然后,定義了一個(gè)源字符串 str2,內(nèi)容為 ", World!"。使用 strcat 函數(shù)將 str2 連接到 str1 的末尾,修改了 str1 的內(nèi)容。最后,使用 printf 函數(shù)打印連接后的字符串。

輸出結(jié)果為:

Concatenated string: Hello, World!

strcat 函數(shù)會(huì)將源字符串的內(nèi)容追加到目標(biāo)字符串的末尾,并確保目標(biāo)字符串以空字符 '\\0' 結(jié)尾。在示例中,str1 原先以空字符結(jié)尾,strcat 函數(shù)會(huì)將 str2 的內(nèi)容從 str1 結(jié)尾處開(kāi)始拷貝,覆蓋掉 str1 的空字符,并在連接的末尾添加一個(gè)新的空字符。

需要注意的是,在使用 strcat 函數(shù)時(shí),確保目標(biāo)字符串的緩沖區(qū)足夠大,以容納源字符串的內(nèi)容和額外的空字符。否則,可能會(huì)導(dǎo)致緩沖區(qū)溢出的錯(cuò)誤。

類似這樣的函數(shù)還有哪些呢?

除了這幾個(gè)常見(jiàn)的字符串函數(shù)外,C 語(yǔ)言還有許多其他常用的字符串函數(shù)。以下是一些高頻使用的字符串函數(shù):

  1. strcat:用于將一個(gè)字符串連接到另一個(gè)字符串的末尾。
  2. strncat:類似于 strcat,但是可以指定要連接的字符數(shù)。
  3. strcmp:已經(jīng)提到過(guò),用于比較兩個(gè)字符串是否相等。
  4. strncmp:類似于 strcmp,但是可以指定要比較的字符數(shù)。
  5. strcpy:已經(jīng)提到過(guò),用于將一個(gè)字符串復(fù)制到另一個(gè)字符串中。
  6. strncpy:類似于 strcpy,但是可以指定要復(fù)制的字符數(shù)。
  7. strchr:在字符串中搜索指定字符的第一個(gè)出現(xiàn)位置,并返回指向該位置的指針。
  8. strrchr:在字符串中搜索指定字符的最后一個(gè)出現(xiàn)位置,并返回指向該位置的指針。
  9. strstr:在字符串中搜索指定子字符串的第一個(gè)出現(xiàn)位置,并返回指向該位置的指針。
  10. strtok:將字符串分割成多個(gè)子字符串,使用指定的分隔符進(jìn)行分割。
  11. sprintf:將格式化的數(shù)據(jù)寫入字符串。
  12. sscanf:從字符串中讀取格式化的數(shù)據(jù)。
  13. strlen:已經(jīng)提到過(guò),用于計(jì)算字符串的長(zhǎng)度。
  14. memset:將指定的值復(fù)制到字符串的每個(gè)字符。
  15. memcpy:將一個(gè)字符串的內(nèi)容復(fù)制到另一個(gè)字符串。

這些函數(shù)是 C 語(yǔ)言中處理字符串時(shí)經(jīng)常使用的函數(shù),它們提供了廣泛的功能,可用于字符串操作、搜索、比較、復(fù)制等。了解和熟練使用這些函數(shù)對(duì)于處理字符串?dāng)?shù)據(jù)非常重要。建議在需要使用特定功能時(shí),查閱相關(guān)函數(shù)的文檔并參考示例代碼以確保正確使用。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    45

    文章

    3664

    瀏覽量

    135075
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137438
  • ASCII
    +關(guān)注

    關(guān)注

    5

    文章

    172

    瀏覽量

    35165
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    string.h 函數(shù)源代碼

    strstr ( )/* -- C語(yǔ)言庫(kù)函數(shù)源代碼 - *//* 得到s1第一次包含s2字符串的位置指針。*/#include char * my_strstr(const char
    發(fā)表于 03-26 10:28

    string.h庫(kù)和strncmp函數(shù)缺少原型

    \ main.c:278(12)缺少原型 我的include文件中有string.h文件,但我認(rèn)為這還不夠;],我現(xiàn)在該怎么辦? #rtfm以上來(lái)自于谷歌翻譯以下為原文 Hi, I want
    發(fā)表于 01-29 08:35

    string類型數(shù)據(jù)與《string.h》頭文件的區(qū)別在哪里?

    string的含義是什么?string與vector容器的區(qū)別在哪?c的字符串是什么?string類型數(shù)據(jù)與《
    發(fā)表于 07-05 07:18

    string與《string.h哪些區(qū)別

    string與《string.h》的定義何不同?string與《string.h哪些區(qū)別?
    發(fā)表于 10-09 07:22

    string.c里相關(guān)函數(shù)介紹

    一、string.c里相關(guān)函數(shù)介紹string.h里主要包含了C語(yǔ)言對(duì)字符串操作的相關(guān)函數(shù),這篇
    發(fā)表于 02-28 09:46

    如何避免rt_int8_t string.h庫(kù)函數(shù)時(shí)出現(xiàn)incompatible告警的情況

    rt_int8_t 使用string.h庫(kù)函數(shù)時(shí)出現(xiàn)incompatible告警例如:rt_int8_t str[10];rt_sprintf( str, "%05.1lf"
    發(fā)表于 10-18 10:15

    使用標(biāo)準(zhǔn)C語(yǔ)言庫(kù)函數(shù)運(yùn)行有錯(cuò)誤應(yīng)當(dāng)怎么設(shè)置?

    我想使用標(biāo)準(zhǔn) C 語(yǔ)言庫(kù)函數(shù),比如 memset 在 string.h 中有定義,可是我直接包含#include , 但是編譯沒(méi)錯(cuò)誤,運(yùn)行確有錯(cuò)誤,應(yīng)當(dāng)怎么設(shè)置?
    發(fā)表于 11-18 14:51

    CodeVisionAVR C語(yǔ)言庫(kù)函數(shù)介紹

    CodeVisionAVR C語(yǔ)言庫(kù)函數(shù)介紹 目錄:1. Character Type Functions - 字符類型函數(shù)2. Standard
    發(fā)表于 04-22 10:17 ?108次下載

    C語(yǔ)言庫(kù)函數(shù)查詢工具

    C語(yǔ)言庫(kù)函數(shù)查詢工具
    發(fā)表于 03-11 09:12 ?246次下載

    C語(yǔ)言庫(kù)函數(shù)使用大全免費(fèi)下載

    C語(yǔ)言庫(kù)函數(shù)使用大全免費(fèi)下載 函數(shù)名: abort 功 能: 異常終止一個(gè)進(jìn)程 用 法: void abort(void); 程序例: #include stdio.
    發(fā)表于 11-16 11:53 ?468次下載

    王牌1_C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)查詢手冊(cè)

    很全的C語(yǔ)言庫(kù)函數(shù)查詢手冊(cè),對(duì)初學(xué)者很有用處。
    發(fā)表于 05-18 14:26 ?3次下載

    C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)

    C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù),使用C語(yǔ)言編程時(shí),常用到的函數(shù)。
    發(fā)表于 05-11 16:41 ?0次下載

    基于C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)

    基于C語(yǔ)言標(biāo)準(zhǔn)庫(kù)函數(shù)
    發(fā)表于 10-23 17:41 ?11次下載
    基于<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>標(biāo)準(zhǔn)<b class='flag-5'>庫(kù)函數(shù)</b>

    請(qǐng)問(wèn)C語(yǔ)言里strcpy具體怎么使用

    標(biāo)準(zhǔn)庫(kù)的string類提供了3個(gè)成員函數(shù)來(lái)從一個(gè)string得到c類型的字符數(shù)組:c_str()、data()、copy(p,n)。這是
    發(fā)表于 11-29 08:54 ?1.1w次閱讀

    單片機(jī) keil c語(yǔ)言字符比較函數(shù)的使用 使用strcmp();

    單片機(jī) keil c語(yǔ)言字符比較函數(shù)的使用 使用strcmp();strcmp()的介紹、32單片機(jī)的使用示例注意事項(xiàng)strcmp()的介紹、這是菜鳥(niǎo)教程的介紹:
    發(fā)表于 11-21 15:06 ?17次下載
    單片機(jī) keil  <b class='flag-5'>c</b><b class='flag-5'>語(yǔ)言</b>字符比較<b class='flag-5'>函數(shù)</b>的使用 使用strcmp();
    主站蜘蛛池模板: 穿着丝袜被男生强行啪啪 | 婷婷色色狠狠爱 | 一久久| 国精产品一区一区三区M | 国产精品久久久久婷婷五月色 | 最近日本字幕免费高清 | 国产呦精品一区二区三区下载 | 国产精品久久久精品a级小说 | 美女被艹网站 | 小黄文污到你湿 | 国产成人在线视频网站 | 99久久就热视频精品草 | 日本二区三区欧美亚洲国 | 视频一区国产在线二区 | 熟妇久久无码人妻AV蜜桃 | 十九岁韩国电影在线观看 | 99er久久国产精品在线 | CHRISTMAS农村夫妻HO | 亚洲精品久久久WWW游戏好玩 | FREEHDXXXX学生妹 | 儿子操妈妈 | 在线观看亚洲免费视频 | 永久免费在线视频 | 国产小视频国产精品 | 天天久久影视色香综合网 | 暖暖的视频完整视频免费韩国 | a级精品九九九大片免费看 A级韩国乱理伦片在线观看 | 国产亚洲精品久久无码98 | 最近中文字幕免费高清MV视频 | 97在线视频免费 | 三级全黄的视频 | 色婷婷综合激情中文在线 | 97在线精品视频 | 国产日韩在线欧美视频 | 成人国产AV精品久久久久 | chinese帅哥gv在线看 | 老师在讲桌下边h边讲课 | 久久久影院亚洲精品 | 国产女人乱人伦精品一区二区 | 不良网站进入窗口软件下载免费 | 成人亚洲视频 |