字串小結

2021-10-07 04:27:41 字數 3182 閱讀 3029

1、獲取字串的長度(strlen)

size_t strlen( const char* str);

功能:計算字串的有效長度,不包含0。

返回值:返回字串的字元數 。

strlen 函式計算的是字串的實際長度,遇到第乙個0結束。

函式返回值一定是size_t,是無符號的整數,

即typedef unsigned int size_t。

如果您只定義字串沒有初始化,求它的長度是沒意義的,它會從首位址一直找下去,遇到0停止。

char name[50]

;memset

(name,0,

sizeof

(name));

strcpy

(name,

"wucongzhou");

printf

("name 的長度是%d\n"

,strlen

(name));

// name 的長度是10

memset

(name,0,

sizeof

(name));

strcpy

(name,

"西施");

printf

("name 的長度是%d\n"

,strlen

(name));

//name 的長度是4

還有乙個注意事項,sizeof返回的是變數所佔的記憶體數,不是實際內容的長度。

char buf[10]

="abc"

;// 定義的時候初始化。

printf

("strlen(buf)=%d\n"

,strlen

(buf));

// strlen(buf)=3

printf

("sizeof(buf)=%d\n"

,sizeof

(buf));

// sizeof(buf)=10

2、字串複製或賦值(strcpy)

char *strcpy(char* dest, const char* src);

功 能: 將引數src字串拷貝至引數dest所指的位址。

返回值: 返回引數dest的字串起始位址。

複製完字串後,在dest後追加0。

如果引數dest所指的記憶體空間不夠大,可能會造成緩衝溢位的錯誤情況。

3、字串複製或賦值(strncpy)

char * strncpy(char* dest,const char* src, const size_t n);

strncpy summary

4、字串拼接(strcat)

char *strcat(char* dest,const char* src);

5、字串拼接(strncat)

char *strncat (char* dest,const char* src, const size_t n);

功能:將src字串的前n個字元拼接到dest所指的字串尾部。

返回值:返回dest字串的起始位址。

如果n大於等於字串src的長度,那麼將src全部追加到dest的尾部,如果n大於字串src的長度,只追加src的前n個字元。

strncat會將dest字串最後的0覆蓋掉,字元追加完成後,再追加0。

以上兩個函式的dest要有足夠的空間來容納要拼接的字串,否則可能會造成緩衝溢位的錯誤情況。

strncat summary

6、字串比較(strcmp、strncmp)

int strcmp(const char *str1, const char *str2 );

int strncmp(const char *str1,const char *str2 ,const size_t n);

功能:比較str1和str2的大小;返回值:相等返回0,str1大於str2返回1,str1小於str2返回-1;

兩個字串比較的方法是比較字元的ascii碼的大小,從兩個字串的第乙個字元開始,如果分不出大小,就比較第二個字元,如果全部的字元都分不出大小,就返回0,表示兩個字串相等。

在實際開發中,程式設計師一般只關心字串是否相等,不關心哪個字串更大或更小。

7、字元查詢(strchr、strrchr)

char *strchr(const char *s,const int c);

char *strrchr(const char *s,const int c);

返回乙個指向在字串s中最後乙個出現c的位置,如果找不到,返回0。

8、字串查詢(strstr)

char *strstr(const char* str,const char* substr);

功能:檢索子串在字串中首次出現的位置。

字串的位址偏移其本質是指標的運算,常用於靈活的處理字串。

char strname[21]

;memset

(strname,0,

sizeof

(strname));

strcpy

(strname,

"abcdefghijk");

// 把abcdefghijk賦值給strname

char strname1[21]

;memset

(strname1,0,

sizeof

(strname1));

strcpy

(strname1,strname+1)

;//把bcdefghijk的值賦給strname1

strncpy

(strname1,strname+2,

3);//把cde的值賦給strname1

當然,對strname1也可以使用偏移量。

字串小結

1.字串概念 字串是位於雙引號中的字串行 在記憶體中以 0 結束,所佔位元組比實際多乙個 2.字串的初始化 在c語言中沒有專門的字串變數,通常用乙個字元陣列來存放乙個字串。前面介紹字串常量時,已說明字串總是以 0 作為串的結束符。因此當把乙個字串存入乙個陣列時,也把結束符 0 存入陣列,並以此作為該...

字串小結

string的第乙個內容是hash。這個強有力的優化方式會給解題帶來巨大便利,很可惜的是我並沒有能參透。據我理解,hash實際上就是將待雜湊的資料根據某種規則重新對映的乙個過程,而這個過程往往會大大的降低資料的空間複雜度和訪問所需的時間複雜度。比如以下數列 12,23,34,45,50,我設定乙個雜...

字串操作小結

上學那會就對字串這塊不甚理解,當時也懶得總結!現在開始工作了,字串操作這塊又被提上日程,於是乎這次一定要稍微寫點東西 string和stringbuffer 找工作那會,這兩個類總是會被提到,無外乎說說他們的區別與用法,其實對於它們本身而言string類是字串常量,是不可更改的常量。而stringb...