C字串操作函式及sizeof strlen區別

2021-09-17 18:59:26 字數 4107 閱讀 4596

本文總結記錄c語言中字串操作介面函式的使用及關鍵字sizeof和strlen操作的區別

sizeof 與 strlen

定義字串常量

char

*str =

"hello world"

;// *str 為指向 .rodata 空間中存放字元 'h' 的位址

該字串常量在 .rodata 中建立連續的空間來存放字串,此時該字串為唯讀,不可修改

strcpy 和 strncpy

// 將src指向空間中的字串,複製到dest指向的空間中,返回dest

char

*strcpy

(char

*dest,

const

char

*src)

// 將src指向空間中的前n個字元,複製到dest指向的空間中,返回dest

char

*strncpy

(char

*dest,

const

char

*src,

int n)

strcat 和 strncat
// 將src所指的字串附加到dest所指字串的末尾

char

*strcat

(char

*dest,

const

char

*src)

// 將src所指的前n個字元附加到dest所指的字串末尾

char

*strncat

(char

*dest,

const

char

*src,

int n)

strcmp 和 strncmp
int

strcmp

(char

*dest,

char

*src)

intstrncmp

(char

*dest,

const

char

*src,

int n)

strcmp 比較兩個字串 dest 和 src 的大小,以 『\0』 結束;

strncmp 只比較兩個字串 dest 和 src 前 n 個字元的大小;

兩者返回值如下:

當返回值大於0,說明前面的字串 dest 大於後面的字串 src;

當返回值小於0,說明前面的字串 dest 小於後面的字串 src;

當返回值等於0,說明前面的字串 dest 等同於後面的字串 src;

void

fun_compare()

else

printf

("輸入錯誤\n");

}

strcasecmp 和 strncasecmp

這兩個函式類似於 strcmp 和 strncmp,區別在於比較字串時忽略大小寫

#

include

intstrcasecmp

(const

char

*s1,

const

char

*s2)

;int

strncasecmp

(const

char

*s1,

const

char

*s2,

size_t n)

;

void

testcasecmp()

執行列印:return: 0

strchr 和 strrchr

// 在dest指向的字串中,從第0個元素開始向後找字元c,找到就終止

char

*strchr

(const

char

*dest,

char c)

// 從最後乙個元素開始向前找字元c,找到就終止,並返回該字元的指標,否則返回null

char

*strrchr

(const

char

*dest,

char c)

void

find_char()

輸出兩個字元 o 的位址不一樣

strstr 和 strrstr

// 從str1中順序查詢str2所指的字串

char

*strstr

(char

*str1,

const

char

*str2)

// 從str1中逆序查詢str2所指的字串

char

*strrstr

(char

*str1,

const

char

*str2)

strtod
// str 為將要進行轉換的字串

// endptr 為 str 中數值後的下乙個字元位置

double

strtod

(const

char

*str,

char

**endptr)

返回值為:如果成功轉換字串 str 中的數值,則返回該數值的 double 型,否則返回 0.0

void

transform_string()

strtok
// 將目標字串 str 分解為一組字串,delim 為分隔符

char

*strtok

(char

*str,

const

char

*delim)

用法如下:

#

include

#include

intmain

(int argc,

char

*ar**)

return0;

}

atoi 和 atol
// 將str中表示的數字轉換成int型的數字

intatoi

(const

char

*str)

// 將str中表示的數字轉換成long int型的數字

long

atol

(const

char

*str)

返回值為轉換後的型別值。

void

transform_data_type

(char

*buf)

sizeof為 c 語言中的關鍵字,而strlen為求字串長度的函式。

關鍵字 sizeof

sizeof(普通變數) 返回該變數型別所佔的空間大小,int 變數返回 4, char 變數返回 1

sizeof(指標變數) 不管該指標變數為何種型別,返回值都為 4 / 8,因為sizeof返回該變數空間的大小

sizeof(陣列變數) 返回整個陣列的空間大小,即:陣列元素個數 x sizeof(陣列型別)

函式 strlen

int

strlen

(char

*str)

通過函式原型可以看出,strlen 傳入乙個字串的首位址,返回該字串的長度,長度不包括最後的 『\0』 空字元。

c字串函式及指標操作

c 的程式設計師對c中的字串指標操作的函式卻並不是相當的熟悉。而c中的這些字串的指標操作函式有的時候也是必須要面對的,比如我們的庫要提供c函式介面,保持向後相容和跨平台,還有我們經常使用一些第三方的庫中都或多或少的使用到了這些c中的指標操作函式,所以下面列出c的指標操作函式,幫助大家熟悉之。1.模擬...

c 字串及陣列操作

字串操作 取當前時間 string time convert.tostring datetime.today split new char textbox1.text time 0 以空格作為分界點 陣列概述 c 陣列從零開始建立索引,即陣列索引從零開始。c 中陣列的工作方式與在大多數其他流行語言中...

c 字串及陣列操作

字串操作 取當前時間 string time convert.tostring datetime.today split new char textbox1.text time 0 以空格作為分界點 陣列概述 c 陣列從零開始建立索引,即陣列索引從零開始。c 中陣列的工作方式與在大多數其他流行語言中...