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

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C語言string.h中的庫函數有哪些?

冬至子 ? 來源:小李的創客實驗室 ? 作者:初出茅廬的小李 ? 2023-07-08 16:38 ? 次閱讀

C語言字符數組與字符串數組

在C語言中,字符數組字符串數組實際上是同一種類型。字符串是由字符組成的字符數組,通常以空字符 '\\0' 結尾。C語言中的字符串是一種常見的數據類型。我們可以通過兩種方式定義字符數組跟字符串數組

char charArray[10];               // 定義一個包含10個字符的字符數組
char strArray[10] = "Hello";      // 定義并初始化一個字符串數組

常用函數之strlen()函數

strlen 是 C 語言中的一個字符串函數,用于計算字符串的長度,即字符串中字符的個數(注意它是不包括結尾的空字符 '\\0')。

函數原型如下:

size_t strlen(const char *str);

參數 str 是一個指向以空字符 '\\0' 結尾的字符串的指針。函數返回一個 size_t 類型的值,表示字符串的長度。

以下是一個使用 strlen 函數的示例代碼:

#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;
}

在上述示例中,我們定義了一個字符串 str,并使用 strlen 函數計算字符串的長度,將結果保存在變量 length 中。最后,使用 printf 函數打印字符串的長度。

輸出結果為:

Length of the string: 13

注意,strlen 函數返回的長度不包括結尾的空字符 '\\0'。所以對于上述示例中的字符串 "Hello, World!",雖然實際占用的字符數為 13,但 strlen 函數返回的結果是 13,而不是 14。這是因為 C 語言中的字符串以空字符 '\\0' 結尾,作為字符串的結束標志。

5個字母+1個逗號 + 1個空格 + 5個字母+1個感嘆號 = 13個字節

常用函數之strcpy()函數

strcpy 是 C 語言中的一個字符串函數,用于將一個字符串復制到另一個字符串中。

函數原型如下:

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

參數 dest 是目標字符串的指針,src 是源字符串的指針。函數將源字符串的內容復制到目標字符串中,并返回指向目標字符串的指針。//后面的字符串被復制到前面的那個字符串 并返回指向的目標字符串指針

以下是一個使用 strcpy 函數的示例代碼:

#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;
}

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

輸出結果為:

Copied string: Hello

注意,在使用 strcpy 函數時,需要確保目標字符串的緩沖區足夠大以容納源字符串的內容。否則,可能會導致緩沖區溢出的錯誤。此外,確保源字符串以空字符 '\\0' 結尾,以便 strcpy 函數正確復制整個字符串。

常用函數之strcmp()函數

strcmp 是 C 語言中的一個字符串函數,用于比較兩個字符串是否相等。

函數原型如下:

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

參數 str1str2 是兩個要比較的字符串的指針。函數返回一個整數值,表示比較結果的大小關系:

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

什么是按照字典排序呢?

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

字典順序比較的規則如下:

  1. 比較字符串中對應位置的第一個字符。
  2. 如果兩個字符不相等,那么根據它們的 ASCII 值來確定它們的大小關系。較小的字符被認為是在字典中 較早的位置較大的字符被認為是在字典中 較后的位置
  3. 如果兩個字符相等,則繼續比較下一個字符,直到找到不相等的字符或遇到字符串的結尾(即遇到空字符 '\\0')。
  4. 如果其中一個字符串到達結尾而另一個字符串還有剩余字符,則被認為到達結尾的字符串較小。

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

  • "apple" 按字典順序小于 "banana",因為 'a' 比 'b' 小。ASCII碼值小
  • "cat" 按字典順序大于 "dog",因為 'c' 比 'd' 大。
  • "hello" 按字典順序等于 "hello",因為每個對應位置的字符都相等。
  • "open" 按字典順序大于 "office",因為在第一個字符 'o' 相等的情況下,第二個字符 'p' 比 'f' 大。

需要注意的是,字母的大小比較是基于其對應的 ASCII 值進行的。在 ASCII 編碼中,小寫字母的 ASCII 值比大寫字母的 ASCII 值大*。因此,在按字典順序比較字符串時,大寫字母會被認為是在相應小寫字母之前。*

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

以下是一個使用 strcmp 函數的示例代碼:

#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;
}

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

輸出結果為:

str1 is less than str2.

在此示例中,由于 "Hello" 按字典順序小于 "World",所以 strcmp 函數返回一個負數值,表明 str1 小于 str2。根據返回的結果,我們輸出了相應的消息。

需要注意的是,strcmp 函數是區分大小寫的。如果要執行不區分大小寫的字符串比較,可以使用 strcasecmp 函數(在一些編譯器中可能稱為 _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 */

常用函數之strcat()函數

strcat 是 C 語言中的一個字符串函數,用于將一個字符串連接到另一個字符串的末尾。

函數原型如下:

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

參數 dest 是目標字符串的指針,src 是源字符串的指針。函數將源字符串的內容連接到目標字符串的末尾,并返回指向目標字符串的指針。

以下是一個使用 strcat 函數的示例代碼:

#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;
}

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

輸出結果為:

Concatenated string: Hello, World!

strcat 函數會將源字符串的內容追加到目標字符串的末尾,并確保目標字符串以空字符 '\\0' 結尾。在示例中,str1 原先以空字符結尾,strcat 函數會將 str2 的內容從 str1 結尾處開始拷貝,覆蓋掉 str1 的空字符,并在連接的末尾添加一個新的空字符。

需要注意的是,在使用 strcat 函數時,確保目標字符串的緩沖區足夠大,以容納源字符串的內容和額外的空字符。否則,可能會導致緩沖區溢出的錯誤。

類似這樣的函數還有哪些呢?

除了這幾個常見的字符串函數外,C 語言還有許多其他常用的字符串函數。以下是一些高頻使用的字符串函數:

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編碼器
    +關注

    關注

    45

    文章

    3639

    瀏覽量

    134440
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136713
  • ASCII
    +關注

    關注

    5

    文章

    172

    瀏覽量

    35095
收藏 人收藏

    評論

    相關推薦

    string.h 函數源代碼

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

    string.h庫和strncmp函數缺少原型

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

    string類型數據與《string.h》頭文件的區別在哪里?

    string的含義是什么?string與vector容器的區別在哪?c的字符串是什么?string類型數據與《
    發表于 07-05 07:18

    string與《string.h哪些區別

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

    string.c里相關函數介紹

    一、string.c里相關函數介紹string.h里主要包含了C語言對字符串操作的相關函數,這篇
    發表于 02-28 09:46

    如何避免rt_int8_t string.h函數時出現incompatible告警的情況

    rt_int8_t 使用string.h函數時出現incompatible告警例如:rt_int8_t str[10];rt_sprintf( str, "%05.1lf"
    發表于 10-18 10:15

    使用標準C語言庫函數運行有錯誤應當怎么設置?

    我想使用標準 C 語言庫函數,比如 memset 在 string.h 中有定義,可是我直接包含#include , 但是編譯沒錯誤,運行確有錯誤,應當怎么設置?
    發表于 11-18 14:51

    CodeVisionAVR C語言庫函數介紹

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

    C語言庫函數查詢工具

    C語言庫函數查詢工具
    發表于 03-11 09:12 ?246次下載

    C語言庫函數使用大全免費下載

    C語言庫函數使用大全免費下載 函數名: abort 功 能: 異常終止一個進程 用 法: void abort(void); 程序例: #include stdio.
    發表于 11-16 11:53 ?468次下載

    王牌1_C語言標準庫函數查詢手冊

    很全的C語言庫函數查詢手冊,對初學者很有用處。
    發表于 05-18 14:26 ?3次下載

    C語言標準庫函數

    C語言標準庫函數,使用C語言編程時,常用到的函數
    發表于 05-11 16:41 ?0次下載

    基于C語言標準庫函數

    基于C語言標準庫函數
    發表于 10-23 17:41 ?11次下載
    基于<b class='flag-5'>C</b><b class='flag-5'>語言</b>標準<b class='flag-5'>庫函數</b>

    請問C語言里strcpy具體怎么使用

    標準庫的string類提供了3個成員函數來從一個string得到c類型的字符數組:c_str()、data()、copy(p,n)。這是
    發表于 11-29 08:54 ?1.1w次閱讀

    單片機 keil c語言字符比較函數的使用 使用strcmp();

    單片機 keil c語言字符比較函數的使用 使用strcmp();strcmp()的介紹、32單片機的使用示例注意事項strcmp()的介紹、這是菜鳥教程的介紹:
    發表于 11-21 15:06 ?17次下載
    單片機 keil  <b class='flag-5'>c</b><b class='flag-5'>語言</b>字符比較<b class='flag-5'>函數</b>的使用 使用strcmp();
    主站蜘蛛池模板: 国产高清视频a在线大全| 亚洲精品国产AV成人毛片 | 野花日本大全免费高清完整版| 四虎影视国产精品亚洲精品| 泡妞高手在都市免费观看| 男人女人边摸边吃奶边做| 迈开腿让我看下你的小草莓声音| 久久久久久久电影| 久久婷婷五月综合色情| 久色乳综合思思在线视频| 老师那里好大又粗h男男| 两个人在线观看的视频720| 麻豆AV无码精品一区二区| 免费高清国产| 欧美精品XXXXBBBB| 秋霞影院福利电影| 日本一本道高清码v| 色偷偷av男人的天堂| 水蜜桃亚洲一二三四在线| 四虎永久在线精品国产| 无遮挡午夜男女XX00动态| 羞羞在线观看| 亚洲熟女片嫩草影院| 中文字幕人成乱码中国| ppypp日本欧美一区二区| 成年黄网站免费大全毛片| 国产精品A久久777777| 国际老妇高清在线观看| 久99视频精品免费观看福利| 久久香蕉国产线看观看首页 | 国产噜噜噜精品免费| 果冻传媒妈妈要儿子| 久久黄色片| 欧美一区二区VA毛片视频| 手机免费毛片| 亚洲色在线| 99久久国产露脸精品国产吴梦梦| 粗好大用力好深快点漫画| 国产一区二区青青精品久久| 久久亚洲伊人| 日本国产成人精品无码区在线网站 |