史上最簡單詳細的字串處理函式整理

2021-09-29 02:47:48 字數 3224 閱讀 8571

以下:摘自大佬csdn+自己體會

1、strcpy(a,b):乙個用來複製整個字串的庫函式

示例如下:

**:strcpy()函式詳解

strcat、strcpy、strcmp三種函式用法

char a[7]

="abcdef"

;char b[4]

="abc"

;//備註:字串最後乙個位元組存放的是乙個空字元「\0」,用來表示字串的結束

strcpy

(a,b)

;puts

(a); 輸出字串,相當於printf

("%s\n"

,a);

a這個陣列在第三行執行後裡面是什麼:是「abc\0ef」

還是「abc\0」 呢?

結果輸出的是abc\0;

為啥答案不是abc\0ef ?

(2)字串的特性:

字串最後乙個位元組存放的是乙個空字元——「\0」,用來表示字串的結束

因此,把b複製到a之後,b的空字元把複製後的字串隔斷(abc\0ef\0),最終,puts輸出abc。

附:puts()函式和printf()函式的區別

1.printf(

)函式是格式化輸出函式,書寫格式為 printf(

"《格式化字串》", 《參量表》);

其中格式化字串包括兩部分內容: 一部分是正常字元, 這些字元將按原樣輸出; 另一部分是格式化規定字元, 以"%"開始, 後跟乙個或幾個規定字元,用來確定輸出內容格式。

2.puts(

)函式用來向標準輸出裝置(螢幕)寫字串並換行。其呼叫格式為:puts(s)

; 其中s為字串變數(字串陣列名或字串指標)。相當於printf(

"%s", s)

;對了,還得加個換行符→printf(

"%s\n",s)

;對了,puts(

)函式只能輸出字串,不能輸出數值或進行格式變換。

還有printf顯示更清晰,puts執行更快。

2、strncpy(a,b,n)函式

(1)從第乙個字串的首位址開始覆蓋

(2)a字串是否存在取決於n指定的長度

以上面字元陣列a,b為例

示例如下:

int

main

(void

)

字串「abc」的長度在陣列b中占有四位(包括"\0")

① n《字串「」abc「的長度

n=

2輸出結果為:abcdfgi

② n=字串「」abc「的長度

n=4;

輸出:abc

因為第四位為字串結束識別符號"\0"

③ n>字串「」abc「的長度

n=

5輸出:abc

多出來的位數繼續補「\0」

3、strcat(a,b): 複製字串b,將b拼接在字串a後面。

示例如下:

char a[

100]

="i love "

;char b[

100]

="you"

;strcat_s

(a, b)

;puts

(a);

輸出:i love you

4、strstr(str1,str2):

用來判斷str2是否為str1的子串

若是,則返回str2在str1中首次出現的位址;若不是,null。

#include

#include

char uart2_buf[12]

="abstartdend"

;char mystr1[20]

=;char

*mystr = mystr1;

void

test_strstr()

intmain

(void

)

特別注意的是,字串返回後,str2與str1共用相同位址,乙個改另乙個跟著變。

#include

#include

char uart2_buf[12]

="abstartdend"

;char mystr1[20]

=;char

*mystr = mystr1;

void

clr_buf2

(void

)void

test_strstr()

intmain

(void

)輸出:mystr= (相當於沒有任何輸出結果,只有列印而已)

4、memset()庫函式; 標頭檔案 #include

對指定區域進行初始化

2、memset中的第三個引數一定要使用sizeof操作符,因為每個系統下對型別長度的定義可能不一樣

示例如下:

(1)對整形陣列進行初始化

//對整形陣列進行初始化

#include

//sizeof是個運算子,它的結果是字串在記憶體中的所佔位元組大小,它要把\0算進去的。

#include

//strlen函式的意思是測試字串的字元長度,不含字串結束標誌

#include

intmain

(void

)printf

("\n");

}輸出:0000000000

(2)對字元陣列進行初始化

int

main

(void

)printf

("\n");

}輸出:

無任何資料

(3)對字元指標所指區域初始化,必須已經分配記憶體

int

main

(void

)printf

("\n");

free

(pbuf)

; pbuf =

null;}

}`輸出:

無任何資料輸出

史上最詳細的C 函式指標

每乙個函式都占用一段記憶體單元,它們有乙個起始位址,指向函式入口位址的指標稱為函式指標 指向函式的指標變數的一般定義形式為 資料型別 指標變數名 參數列 1 函式指標的定義形式中的資料型別是指函式的返回值的型別。2 區分下面兩個語句 int p int a,int b p是乙個指向函式的指標變數,所...

簡單的字串處理

題目背景 某蒟蒻迷上了 小書童 有一天登陸時忘記密碼了 他沒繫結郵箱or手機 於是便把問題拋給了神犇你。題目描述 蒟蒻雖然忘記密碼,但他還記得密碼是由一串字母組成。且密碼是由一串字母每個向後移動n為形成。z的下乙個字母是a,如此迴圈。他現在找到了移動前的那串字母及n,請你求出密碼。均為小寫 輸入輸出...

簡單的字串處理

1.根據字數計算高度 if string length 0 cgsize size string boundingrectwithsize cgsizemake kmainscreenwidth,0 options nsstringdrawingtruncateslastvisibleline ns...