c語言寫的一些字符串處理函數,C++字符串處理函數

本文目錄一覽:

C語言關於字符串的操作函數有哪些

string.h頭文件中包含的字符串函數

void *memcpy(void *dest, const void *src, size_t n);//將n位元組長的內容從一個內存地址複製到另一個地址;如果兩個地址存在重疊,則最終行為未定義

void *memmove(void *dest, const void *src, size_t n);//將n位元組長的內容從一個內存地址複製到另一個地址;與memcpy不同的是它可以正確作用於兩個存在重疊的地址

void *memchr(const void *s, char c, size_t n);//在從s開始的n個位元組內查找c第一次出現的地址並返回,若未找到則返回NULL

int memcmp(const void *s1, const void *s2, size_t n);//對從兩個內存地址開始的n個字符進行比較

void *memset(void *, int, size_t);//用某種位元組內容覆寫一段內存空間

char *strcat(char *dest, const char *src);//在字符串dest之後連接上src

char *strncat(char *dest, const char *src, size_t n);//從src截取n個字符連接在字符串dest之後,返回dest字符串

char *strchr(const char* str, int ch);//從字符串str頭開始查找字符ch首次出現的位置

char *strrchr(const char* str,int ch);//從字符串str尾開始查找字符ch首次出現的位置

int strcmp(const char *, const char *);//基於字典順序比較兩個字符串

int strncmp(const char *, const char *, size_t);//基於字典順序比較兩個字符串,最多比較n個位元組

int strcoll(const char *, const char *);//基於當前區域設置的字符順序比較兩個字符串

char *strcpy(char* str1, const char* str2);//將str2拷貝給str1

char *strncpy(char* str1, const char* str2, size_t n);//截取str2的n個字符拷貝給str1

char *strerror(int);//返回錯誤碼對應的解釋字符串,參見errno.h(非線程安全函數)

size_t strlen(const char *);//返回一個字符串的長度

size_t strspn(const char *s, const char *strCharSet);//從字符串s的起始處開始,尋找第一個不出現在strCharSet中的字符,返回其位置索引值。換句話說,返回從字符串s的起始位置的完全由strCharSet中的字符構成的子串的最大長度。strspn為string span的縮寫。不支持多位元組字符集。

size_t strcspn(const char *s, const char *strCharSet);//從字符串s的起始處開始,尋找第一個出現在strCharSet中的字符,返回其位置索引值。換句話說,返回從字符串s的起始位置的完全由不屬於strCharSet中的字符構成的子串的最大長度。strcspn為string complement span的縮寫。不支持多位元組字符集。

char *strpbrk(const char *s, const char *strCharSet);//在字符串s中查找strCharSet中任意字符第一次出現的位置的指針值。strpbrk為string pointer break縮寫。不支持多位元組字符集。

char *strstr(const char *haystack, const char *needle);//在字符串haystack中查找字符串needle第一次出現的位置,heystack的長度必須長於needle

char *strtok(char *strToken, const char *strDelimit );//將一個字符串strToken依據分界符(delimiter)分隔成一系列字符串。此函數非線程安全,且不可重入;但MSVC實現時使用了thread-local static variable因而是線程安全的單仍然是不可重入,即在單線程中不能對兩個源字符串交替調用該函數來分析token,應當對一個字符串分析完成後再處理別的字符串。

size_t strxfrm(char *dest, const char *src, size_t n);//根據當前locale轉換一個字符串為strcmp使用的內部格式

C語言字符串處理的庫函數有哪些

函數名: strrchr

功 能: 在串中查找指定字符的最後一個出現

用 法: char *strrchr(char *str, char c);

舉例:

[cpp] view plain copy

char fullname=”./lib/lib1.so”;

char *ptr;

ptr = strrchr(fullname,’/’);

printf(“filename is %s”,++ptr);

//運行結果:filename is lib1.so

函數名: strchr

功 能: 在串中查找指定字符的第一個出現

用 法: char *strchr(char *str, char c);

舉例:

[cpp] view plain copy

char fullname=”./lib/lib1.so”;

char *ptr;

ptr = strrchr(fullname,’.’);

printf(“after strchr() is %s”,++ptr);

//運行結果:after strchr() is /lib/lib1.so

函數名: strtok

功 能: 在串中查找指定字符的第一個出現

用 法: char *strtok(char *s, char *delim);

說明:

1.strtok函數的實質上的處理是,strtok在s中查找包含在delim中的字符並用NULL(』/0′)來替換,直到找遍整個字符串。這句話有兩層含義:(1)每次調用strtok函數只能獲得一個分割單位。(2)要獲得所有的分割單元必須反覆調用strtok函數。

2.strtok函數以後的調用時的需用NULL來替換s.

3.形參s(要分割的字符串)對應的變量應用char s[]=」….」形式,而不能用char *s=」….」形式。

舉例:

[cpp] view plain copy

void main()

{

char buf[]=」Golden Global View」;

char* token = strtok( buf, 」 「);

while( token != NULL )

{

printf( 」%s 「, token );

token = strtok( NULL, 」 「);

}

return 0;

}

/*其結果為:

Golden

Global

View

*/

函數名:strncpy

功能:把src所指由NULL結束的字符串的前n個位元組複製到dest所指的數組中

用法:char *strncpy(char *dest, char *src, int n);

說明:

如果src的前n個位元組不含NULL字符,則結果不會以NULL字符結束。

如果src的長度小於n個位元組,則以NULL填充dest直到複製完n個位元組。

src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。

返回指向dest的指針。

舉例:

[c-sharp] view plain copy

#include syslib.h

#include string.h

main()

{

char buf[4];

char *s=”abcdefg”;

strncpy(buf,s,4);

printf(“%s/n”,buf);

return 0;

}

/*運行結果:

abcd

*/

函數名: stpcpy

功 能: 拷貝一個字符串到另一個

用 法: char *stpcpy(char *destin, char *source);

舉例:

[cpp] view plain copy

#include stdio.h

#include string.h

int main(void)

{

char string[10];

char *str1 = “abcdefghi”;

stpcpy(string, str1);

printf(“%s/n”, string);

return 0;

}

/*運行結果

abcdefghi

*/

函數名: strcat

功 能: 字符串拼接函數

用 法: char *strcat(char *destin, char *source);

舉例:

[cpp] view plain copy

#include string.h

#include stdio.h

int main(void)

{

char destination[25];

char *blank = ” “, *c = “C++”, *Borland = “Borland”;

strcpy(destination, Borland);

strcat(destination, blank);

strcat(destination, c);

printf(“%s/n”, destination);

return 0;

}

/*運行結果:

Borland C++

*/

函數名: strcmp

功 能: 串比較

用 法: int strcmp(char *str1, char *str2);

看Asic碼,str1str2,返回值 0;兩串相等,返回0

舉例:

[cpp] view plain copy

#include string.h

#include stdio.h

int main(void)

{

char *buf1 = “aaa”, *buf2 = “bbb”;

int ptr;

ptr = strcmp(buf2, buf1);

if (ptr 0)

printf(“buffer 2 is greater than buffer 1/n”);

else if(ptr 0)

printf(“buffer 2 is less than buffer 1/n”);

else

printf(“buffer 2 is equal with buffer 1/n”);

return 0;

}

/*運行結果:

buffer 2 is greater than buffer 1

*/

函數名: strncmpi

功 能: 將一個串中的一部分與另一個串比較, 不管大小寫

用 法: int strncmpi(char *str1, char *str2, unsigned maxlen);

舉例:

[cpp] view plain copy

#include string.h

#include stdio.h

int main(void)

{

char *buf1 = “BBB”, *buf2 = “bbb”;

int ptr;

ptr = strcmpi(buf2, buf1);

if (ptr 0)

printf(“buffer 2 is greater than buffer 1/n”);

if (ptr 0)

printf(“buffer 2 is less than buffer 1/n”);

if (ptr == 0)

printf(“buffer 2 equals buffer 1/n”);

return 0;

}

函數名: strcspn

功 能: 在串中查找第一個給定字符集內容的段

用 法: int strcspn(char *str1, char *str2);

舉例:

[cpp] view plain copy

#include stdio.h

#include string.h

#include alloc.h

int main(void)

{

char *string1 = “1234567890”;

char *string2 = “747DC8”;

int length;

length = strcspn(string1, string2);

printf(“Character where strings intersect is at position %d/n”, length);

return 0;

}

函數名: strdup

功 能: 將串拷貝到新建的位置處

用 法: char *strdup(char *str);

舉例:

[cpp] view plain copy

#include stdio.h

#include string.h

#include alloc.h

int main(void)

{

char *dup_str, *string = “abcde”;

dup_str = strdup(string);

printf(“%s/n”, dup_str);

free(dup_str);

return 0;

}

函數名: stricmp

功 能: 以大小寫不敏感方式比較兩個串

用 法: int stricmp(char *str1, char *str2);

舉例:

[cpp] view plain copy

#include string.h

#include stdio.h

int main(void)

{

char *buf1 = “BBB”, *buf2 = “bbb”;

int ptr;

ptr = stricmp(buf2, buf1);

if (ptr 0)

printf(“buffer 2 is greater than buffer 1/n”);

if (ptr 0)

printf(“buffer 2 is less than buffer 1/n”);

if (ptr == 0)

printf(“buffer 2 equals buffer 1/n”);

return 0;

}

函數名: strerror

功 能: 返回指向錯誤信息字符串的指針

用 法: char *strerror(int errnum);

舉例:

[cpp] view plain copy

#include stdio.h

#include errno.h

int main(void)

{

char *buffer;

buffer = strerror(errno);

printf(“Error: %s/n”, buffer);

return 0;

}

函數名: strncmp

功 能: 串比較

用 法: int strncmp(char *str1, char *str2, int maxlen);

舉例:

[cpp] view plain copy

#include string.h

#include stdio.h

int main(void)

{

char *buf1 = “aaabbb”, *buf2 = “bbbccc”, *buf3 = “ccc”;

int ptr;

ptr = strncmp(buf2,buf1,3);

if (ptr 0)

printf(“buffer 2 is greater than buffer 1/n”);

else

printf(“buffer 2 is less than buffer 1/n”);

ptr = strncmp(buf2,buf3,3);

if (ptr 0)

printf(“buffer 2 is greater than buffer 3/n”);

else

printf(“buffer 2 is less than buffer 3/n”);

return(0);

}

函數名: strncmpi

功 能: 把串中的一部分與另一串中的一部分比較, 不管大小寫

用 法: int strncmpi(char *str1, char *str2, int len);

舉例:

[cpp] view plain copy

#include string.h

#include stdio.h

int main(void)

{

char *buf1 = “BBBccc”, *buf2 = “bbbccc”;

int ptr;

ptr = strncmpi(buf2,buf1,3);

if (ptr 0)

printf(“buffer 2 is greater than buffer 1/n”);

if (ptr 0)

printf(“buffer 2 is less than buffer 1/n”);

if (ptr == 0)

printf(“buffer 2 equals buffer 1/n”);

return 0;

}

函數名: strnset

功 能: 將一個串中的所有字符都設為指定字符

用 法: char *strnset(char *str, char ch, unsigned n);

舉例:

[cpp] view plain copy

#include stdio.h

#include string.h

int main(void)

{

char *string = “abcdefghijklmnopqrstuvwxyz”;

char letter = ‘x’;

printf(“string before strnset: %s/n”, string);

strnset(string, letter, 13);

printf(“string after strnset: %s/n”, string);

return 0;

}

函數名: strpbrk

功 能: 在串中查找給定字符集中的字符

用 法: char *strpbrk(char *str1, char *str2);

舉例:

[cpp] view plain copy

#include stdio.h

#include string.h

int main(void)

{

char *string1 = “abcdefghijklmnopqrstuvwxyz”;

char *string2 = “onm”;

char *ptr;

ptr = strpbrk(string1, string2);

if (ptr)

printf(“strpbrk found first character: %c/n”, *ptr);

else

printf(“strpbrk didn’t find character in set/n”);

return 0;

}

函數名: strrev

功 能: 串倒轉

用 法: char *strrev(char *str);

舉例:

[cpp] view plain copy

#include string.h

#include stdio.h

int main(void)

{

char *forward = “string”;

printf(“Before strrev(): %s/n”, forward);

strrev(forward);

printf(“After strrev(): %s/n”, forward);

return 0;

}

/*運行結果:

Before strrev(): string

After strrev(): gnirts

*/

函數名: strstr

功 能: 在串中查找指定字符串的第一次出現

用 法: char *strstr(char *str1, char *str2);

舉例:

[cpp] view plain copy

#include stdio.h

#include string.h

int main(void)

{

char *str1 = “Borland International”, *str2 = “nation”, *ptr;

ptr = strstr(str1, str2);

printf(“The substring is: %s/n”, ptr);

return 0;

}

函數名: strtod

功 能: 將字符串轉換為double型值

用 法: double strtod(char *str, char **endptr);

舉例:

[cpp] view plain copy

#include stdio.h

#include stdlib.h

int main(void)

{

char input[80], *endptr;

double value;

printf(“Enter a floating point number:”);

gets(input);

value = strtod(input, endptr);

printf(“The string is %s the number is %lf/n”, input, value);

return 0;

}

函數名: strtol

功 能: 將串轉換為長整數

用 法: long strtol(char *str, char **endptr, int base);

舉例:

[cpp] view plain copy

#include stdlib.h

#include stdio.h

int main(void)

{

char *string = “87654321”, *endptr;

long lnumber;

/* strtol converts string to long integer */

lnumber = strtol(string, endptr, 10);

printf(“string = %s long = %ld/n”, string, lnumber);

return 0;

}

函數名: strupr

功 能: 將串中的小寫字母轉換為大寫字母

用 法: char *strupr(char *str);

舉例:

[cpp] view plain copy

#include stdio.h

#include string.h

int main(void)

{

char *string = “abcdefghijklmnopqrstuvwxyz”, *ptr;

/* converts string to upper case characters */

ptr = strupr(string);

printf(“%s/n”, ptr);

return 0;

}

c語言字符串函數有哪些

複製相關函數:memcpy、memmove、strcpy、strncpy

字符串連接函數:strcat、strncat

字符串比較函數:memcmp、strcmp、strcoll、strncmp、strxfrm、

查找函數:memchr、strchr、strcspn、strpbrk、strrchr、strspn、strstr、strtok

其他相關函數:memset、strerror、strlen

C語言中對字符串進行操作的標準庫函數有哪些

1)字符串操作

strcpy(p, p1) 複製字符串

strncpy(p, p1, n) 複製指定長度字符串

strcat(p, p1) 附加字符串

strncat(p, p1, n) 附加指定長度字符串

strlen(p) 取字符串長度

strcmp(p, p1) 比較字符串

strcasecmp忽略大小寫比較字符串

strncmp(p, p1, n) 比較指定長度字符串

strchr(p, c) 在字符串中查找指定字符

strrchr(p, c) 在字符串中反向查找

strstr(p, p1) 查找字符串

strpbrk(p, p1) 以目標字符串的所有字符作為集合,在當前字符串查找該集合的任一元素

strspn(p, p1) 以目標字符串的所有字符作為集合,在當前字符串查找不屬於該集合的任一元素的偏移

strcspn(p, p1) 以目標字符串的所有字符作為集合,在當前字符串查找屬於該集合的任一元素的偏移

* 具有指定長度的字符串處理函數在已處理的字符串之後填補零結尾符

2)字符串到數值類型的轉換

strtod(p, ppend) 從字符串 p 中轉換 double 類型數值,並將後續的字符串指針存儲到 ppend 指向的 char* 類型存儲。

strtol(p, ppend, base) 從字符串 p 中轉換 long 類型整型數值,base 顯式設置轉換的整型進制,設置為 0 以根據特定格式判斷所用進制,0x, 0X 前綴以解釋為十六進制格式整型,0 前綴以解釋為八進制格式整型

atoi(p) 字符串轉換到 int 整型

atof(p) 字符串轉換到 double 符點數

atol(p) 字符串轉換到 long 整型

3)字符檢查

isalpha() 檢查是否為字母字符

isupper() 檢查是否為大寫字母字符

islower() 檢查是否為小寫字母字符

isdigit() 檢查是否為數字

isxdigit() 檢查是否為十六進制數字表示的有效字符

isspace() 檢查是否為空格類型字符

iscntrl() 檢查是否為控制字符

ispunct() 檢查是否為標點符號

isalnum() 檢查是否為字母和數字

isprint() 檢查是否是可打印字符

isgraph() 檢查是否是圖形字符,等效於 isalnum() | ispunct()

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/312018.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2025-01-05 16:05
下一篇 2025-01-05 16:05

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中將字符串轉化為浮點數

    本文將介紹在Python中將字符串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字符串轉化為…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 單片機打印函數

    單片機打印是指通過串口或並口將一些數據打印到終端設備上。在單片機應用中,打印非常重要。正確的打印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的打印數據可以幫助我們快速…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29

發表回復

登錄後才能評論