C語言中有哪些字符處理函數(shù)你知道嗎
1、字符串常用操作:連接、拷貝、比較 與 獲取長(zhǎng)度
include <string.h>
/*
將字符串 str2 連接到 str1 的末端,并返回指針 str1
*/
char *strcat( char *str1, const char *str2 )
/*
將字符串 str2 中至多count個(gè)字符連接到字符串 str1 中,并追加空值結(jié)束符。
返回處理完成的字符串。
*/
char *strncat( char *str1, const char *str2, size_t count );
/*
返回一個(gè)指向 str 中 ch 首次出現(xiàn)的位置指針,
當(dāng)沒有在 str 中找到 ch 則返回NULL。
*/
char *strchr( const char *str, int ch )
/*
函數(shù)返回一個(gè)指針,它指向字符 ch 在字符串 str 末次出現(xiàn)的位置,
如果匹配失敗,返回 NULL。
*/
char *strrchr( const char *str, int ch );
/*
比較字符串 str1 與 str2。如果兩個(gè)字符串相等則返回 0;
該函數(shù)的將兩個(gè)字符串按位進(jìn)行比較(字符的Ascall值),
當(dāng)遇到不相等位時(shí)返回結(jié)果。
*/
int strcmp( const char *str1, const char *str2 )
/*
比較字符串 str1 和 str2 中至多 count 個(gè)字符。
*/
int strncmp( const char *str1, const char *str2, size_t count );
/*
將字符串 src 中所有字符賦值到字符串 dst,包括空值結(jié)束符。
返回值為指針dst。
*/
char *strcpy( char *dst, const char *src)
/*
將字符串 src 中至多 count 個(gè)字符復(fù)制到字符串 dst 中。
如果字符串 src 的長(zhǎng)度小于count,其余部分用 '\0' 填補(bǔ)。
返回處理完成的字符串。
*/
char *strncpy( char *dst, const char *src, size_t count );
/*
函數(shù)返回字符串 str 的長(zhǎng)度( 即空值結(jié)束符之前字符數(shù)目)。
*/
size_t strlen( char *str )2、mem_類的函數(shù)(查找、比較、拷貝 與 賦值)
mem_類的函數(shù)與str_的函數(shù)使用起來的最大區(qū)別在于,mem_類函數(shù)不限制數(shù)據(jù)類型,直接在內(nèi)存上進(jìn)行操作,使用起來更強(qiáng)大與靈活。
#include <string.h>
/*
函數(shù)在 buffer 指向的數(shù)組的 count 個(gè)字符的字符串里查找ch 首次出現(xiàn)的位置。
返回一個(gè)指針,指向 ch 在字符串中首次出現(xiàn)的位置,
如果ch 沒有在字符串中找到,返回 NULL。
*/
void *memchr( const void *buffer, int ch, size_t count );
/*
函數(shù)比較 buffer1 和 buffer2 的前 count 個(gè)字符。
*/
int memcmp( const void *buffer1, const void *buffer2, size_t count );
/*
函數(shù)從from中復(fù)制count 個(gè)字符到to中,并返回to指針。
如果 src和 dst 指向的內(nèi)存空間有重疊,函數(shù)行為不確定。
*/
void *memcpy( void *dst, const void *src, size_t count );
/*
函數(shù)拷貝 ch 到 buffer 從頭開始的 count 個(gè)字符里, 并返回buffer指針。
memset() 可以應(yīng)用在將一段內(nèi)存初始化為某個(gè)值。
*/
void *memset( void *buffer, int ch, size_t count );3、尋找字符串子串
/*
函數(shù)返回一個(gè)指針,它指向字符串 str2 首次出現(xiàn)于字符串 str1 中的位置,
如果沒有找到,返回 NULL。
*/
char *strstr( const char *str1, const char *str2 )示例
#include <stdio.h>
#include <string.h>
int main(void)
{
char strA[20] = "hello world!", strB[20] = "world";
char *tmp = strstr(strA, strB);
// (world!)
printf("(%s)\n", tmp);
return 0;
} 4、字符串轉(zhuǎn)數(shù)字
#include <stdlib.h>
/*
將字符串 str 表示浮點(diǎn)數(shù)(帶符號(hào))轉(zhuǎn)換為 double 類型,
end 指針如果不為空則用于接收 str 去掉浮點(diǎn)數(shù)字符串后剩下的字符串。
*/
double strtod( const char *str, char **end )
/*
字符串轉(zhuǎn)長(zhǎng)整形,base代表采用的進(jìn)制
如果返回值無法用長(zhǎng)整型表示,函數(shù)則返回LONG_MAX或LONG_MIN.
錯(cuò)誤發(fā)生時(shí),返回零。
*/
long strtol( const char *str, char **end, int base )
/*
字符串轉(zhuǎn)無符號(hào)長(zhǎng)整形數(shù)
*/
unsigned long strtoul( const char *str, char **end, int base )
/*
將字符串str轉(zhuǎn)換成一個(gè)雙精度數(shù)值并返回結(jié)果。
參數(shù)str 必須以有效數(shù)字開頭
允許以“E”或“e”除外的任意非數(shù)字字符結(jié)尾。
*/
double atof( const char *str )
/*
將字符串str轉(zhuǎn)換成一個(gè)整數(shù)并返回結(jié)果。
參數(shù)str 以數(shù)字開頭,
當(dāng)函數(shù)從str 中讀到非數(shù)字字符則結(jié)束轉(zhuǎn)換并將結(jié)果返回。
*/
double atoi( const char *str )
/*
將字符串轉(zhuǎn)換成長(zhǎng)整型數(shù)并返回結(jié)果。
函數(shù)會(huì)掃描參數(shù)str字符串,跳過前面的空格字符,直到遇上數(shù)字或正負(fù)符號(hào)才開始做轉(zhuǎn)換,
而再遇到非數(shù)字或字符串結(jié)束時(shí)才結(jié)束轉(zhuǎn)換,并將結(jié)果返回。
*/
double atol( const char *str )5、數(shù)字轉(zhuǎn)字符串
#include <stdio.h>
int main(void)
{
int num = 199;
char str[20] = "";
sprintf(str, "%d", num);
// (199)
printf("(%s)\n", str);
return 0;
} 示例
#include <stdio.h>
int main(void)
{
int num = 199;
char str[20] = "";
sprintf(str, "%d", num);
// (199)
printf("(%s)\n", str);
return 0;
} 6、分隔符分割字符串
char *strtok( char *str1, const char *str2 )
示例
#include <stdio.h>
#include <string.h>
int main(void)
{
char str[20] = "ABC|EDF|GH";
char tmp[] = "|", *res = NULL;
res = strtok(str, tmp);
// (ABC) (EDF) (GH)
while(res != NULL)
{
printf("(%s) ", res);
res = strtok(NULL, tmp);
}
return 0;
} 7、大小寫字母判別與轉(zhuǎn)換
#include <ctype.h> // 是否是數(shù)字字符 int isdigit( int ch ) // 是否是字母字符 int isalpha( int ch ) // 是否是小寫字母 int islower( int ch ) // 轉(zhuǎn)小寫字母 int tolower( int ch ) // 是否是大寫字母 int isupper( int ch ); // 轉(zhuǎn)大寫字母 int toupper( int ch )
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C++實(shí)例分析組合數(shù)的計(jì)算與排列組合的產(chǎn)生
這篇文章主要介紹了C++組合數(shù)的計(jì)算與排列和組合無重集元素的產(chǎn)生,對(duì)計(jì)算算法感興趣的同學(xué),可以參考一下,理解其原理,并且試驗(yàn)一下。2022-07-07
編譯錯(cuò)誤error: stray ‘\343’in program的解決方法
以下是對(duì)編譯錯(cuò)誤error: stray ‘\343’in program的解決方法進(jìn)行了詳細(xì)的分析介紹,如遇此問題的朋友們可以過來參考下2013-07-07
C語言實(shí)現(xiàn)簡(jiǎn)易的三子棋小游戲
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡(jiǎn)易的三子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08
C語言編程中常見的五種錯(cuò)誤及對(duì)應(yīng)解決方案
這篇文章主要給大家分享的是C語言編程中常見的五種錯(cuò)誤及對(duì)應(yīng)解決方案,詳細(xì)內(nèi)容就請(qǐng)跟小編一起進(jìn)入下面的文章內(nèi)容吧2021-10-10
Qt實(shí)現(xiàn)卡牌對(duì)對(duì)碰游戲(附demo)
本文主要介紹了Qt實(shí)現(xiàn)卡牌對(duì)對(duì)碰游戲,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10
c++之time_t和struct tm及時(shí)間戳的正確使用方式
C++中處理時(shí)間的常用數(shù)據(jù)類型有time_t和struct tm,time_t通常用來表示時(shí)間戳,即從1970年1月1日至今的秒數(shù),struct tm是一個(gè)結(jié)構(gòu)體,用來存儲(chǔ)年、月、日、時(shí)、分、秒等信息,時(shí)間戳可以通過gmtime()轉(zhuǎn)換為struct tm類型,反之亦然2024-10-10
C語言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)和雙向鏈表操作
這篇文章主要介紹了C語言實(shí)現(xiàn)數(shù)據(jù)結(jié)構(gòu)雙向鏈表操作,需要的朋友可以參考下2017-03-03

