c語言使用字符處理函數(shù) c語言字符處理函數(shù)怎么用

C語言關(guān)于字符串的操作函數(shù)有哪些

string.h頭文件中包含的字符串函數(shù)

創(chuàng)新互聯(lián)專注于濰坊企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,電子商務(wù)商城網(wǎng)站建設(shè)。濰坊網(wǎng)站建設(shè)公司,為濰坊等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

void?*memcpy(void?*dest,?const?void?*src,?size_t?n);//將n字節(jié)長的內(nèi)容從一個內(nèi)存地址復(fù)制到另一個地址;如果兩個地址存在重疊,則最終行為未定義

void?*memmove(void?*dest,?const?void?*src,?size_t?n);//將n字節(jié)長的內(nèi)容從一個內(nèi)存地址復(fù)制到另一個地址;與memcpy不同的是它可以正確作用于兩個存在重疊的地址

void?*memchr(const?void?*s,?char?c,?size_t?n);//在從s開始的n個字節(jié)內(nèi)查找c第一次出現(xiàn)的地址并返回,若未找到則返回NULL

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

void?*memset(void?*,?int,?size_t);//用某種字節(jié)內(nèi)容覆寫一段內(nèi)存空間

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首次出現(xiàn)的位置

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

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

int?strncmp(const?char?*,?const?char?*,?size_t);//基于字典順序比較兩個字符串,最多比較n個字節(jié)

int?strcoll(const?char?*,?const?char?*);//基于當(dāng)前區(qū)域設(shè)置的字符順序比較兩個字符串

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);//返回錯誤碼對應(yīng)的解釋字符串,參見errno.h(非線程安全函數(shù))

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

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

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

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

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

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

size_t?strxfrm(char?*dest,?const?char?*src,?size_t?n);//根據(jù)當(dāng)前l(fā)ocale轉(zhuǎn)換一個字符串為strcmp使用的內(nèi)部格式

C語言中對字符串進行操作的標(biāo)準(zhǔn)庫函數(shù)有哪些

1)字符串操作

strcpy(p, p1) 復(fù)制字符串

strncpy(p, p1, n) 復(fù)制指定長度字符串

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) 以目標(biāo)字符串的所有字符作為集合,在當(dāng)前字符串查找該集合的任一元素

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

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

* 具有指定長度的字符串處理函數(shù)在已處理的字符串之后填補零結(jié)尾符

2)字符串到數(shù)值類型的轉(zhuǎn)換

strtod(p, ppend) 從字符串 p 中轉(zhuǎn)換 double 類型數(shù)值,并將后續(xù)的字符串指針存儲到 ppend 指向的 char* 類型存儲。

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

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

atof(p) 字符串轉(zhuǎn)換到 double 符點數(shù)

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

3)字符檢查

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

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

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

isdigit() 檢查是否為數(shù)字

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

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

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

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

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

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

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

C語言字符串處理的庫函數(shù)有哪些

函數(shù)名: strrchr

功 能: 在串中查找指定字符的最后一個出現(xiàn)

用 法: 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);

//運行結(jié)果:filename is lib1.so

函數(shù)名: strchr

功 能: 在串中查找指定字符的第一個出現(xiàn)

用 法: 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);

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

函數(shù)名: strtok

功 能: 在串中查找指定字符的第一個出現(xiàn)

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

說明:

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

2.strtok函數(shù)以后的調(diào)用時的需用NULL來替換s.

3.形參s(要分割的字符串)對應(yīng)的變量應(yīng)用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;

}

/*其結(jié)果為:

Golden

Global

View

*/

函數(shù)名:strncpy

功能:把src所指由NULL結(jié)束的字符串的前n個字節(jié)復(fù)制到dest所指的數(shù)組中

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

說明:

如果src的前n個字節(jié)不含NULL字符,則結(jié)果不會以NULL字符結(jié)束。

如果src的長度小于n個字節(jié),則以NULL填充dest直到復(fù)制完n個字節(jié)。

src和dest所指內(nèi)存區(qū)域不可以重疊且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;

}

/*運行結(jié)果:

abcd

*/

函數(shù)名: 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;

}

/*運行結(jié)果

abcdefghi

*/

函數(shù)名: strcat

功 能: 字符串拼接函數(shù)

用 法: 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;

}

/*運行結(jié)果:

Borland C++

*/

函數(shù)名: 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;

}

/*運行結(jié)果:

buffer 2 is greater than buffer 1

*/

函數(shù)名: 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;

}

函數(shù)名: strcspn

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

用 法: 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;

}

函數(shù)名: 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;

}

函數(shù)名: 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;

}

函數(shù)名: 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;

}

函數(shù)名: 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);

}

函數(shù)名: 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;

}

函數(shù)名: strnset

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

用 法: 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;

}

函數(shù)名: 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;

}

函數(shù)名: strrev

功 能: 串倒轉(zhuǎn)

用 法: 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;

}

/*運行結(jié)果:

Before strrev(): string

After strrev(): gnirts

*/

函數(shù)名: strstr

功 能: 在串中查找指定字符串的第一次出現(xiàn)

用 法: 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;

}

函數(shù)名: strtod

功 能: 將字符串轉(zhuǎn)換為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;

}

函數(shù)名: strtol

功 能: 將串轉(zhuǎn)換為長整數(shù)

用 法: 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;

}

函數(shù)名: strupr

功 能: 將串中的小寫字母轉(zhuǎn)換為大寫字母

用 法: 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;

}

網(wǎng)頁標(biāo)題:c語言使用字符處理函數(shù) c語言字符處理函數(shù)怎么用
轉(zhuǎn)載來于:http://muchs.cn/article36/hgcjpg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、ChatGPT、網(wǎng)站改版、品牌網(wǎng)站設(shè)計、用戶體驗、虛擬主機

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)