C語言天天練(八) 字串

2021-06-22 11:48:20 字數 2073 閱讀 3621

字串是一種重要的資料型別,但c語言中沒有顯式的字串資料型別。標頭檔案string.h中包含了大多數對字串的操作函式。因此,有字串的操作時,一般會包含string.h標頭檔案。

1、字串的長度:對字串進行的操作中,經常要對它進行求長度的操作。字串的長度就是它所包含的字元個數。

size_t strlen(char const *string);

注意:strlen返回乙個型別為size_t的值,它是乙個無符號整數型別。在表示式中使用無符號數可能導致不可預料的結果。

如下面兩條表示式並不相等:

if(strlen(x) >= strlen(y)) .... /*按照預想的那樣工作*/

if(strlen(x) - strlen(y) >= 0).../*永遠為真,strlen的結果是個無符號數,所以操作符》=左邊的表示式也將是無符號數*/

size_t

strlen(char const *string)

2、複製字串:用於複製字串的函式時strcpy,原型如下:char *strcpy(char *dst, char const *src); 它把引數src字串複製到dst引數。dst引數的以前內容將被覆蓋掉並丟失。即使新的字串比dst原先的記憶體更短,由於新字串以nul位元組結尾,所以老字串最後剩餘的幾個字元也會被有效地刪除,(其實並為被刪除,可以使用位址訪問)。

我們必須確保目標字元陣列的空間足以容納需要複製的字串。如果字串比數組長,多餘的字元仍被複製,它們將覆蓋原先儲存於陣列後面的記憶體空間的值。在使用該函式前確保目標引數足以容納源字串,就可以避免大量的除錯工作。

#include #include int

main(int argc, char **argv)

3、連線字串:把乙個字串新增(連線)到另乙個字串的後面。原型:char *strcat(char *dst, char const *src); 該函式要求dst引數原先已經包含了乙個字串,它找到這個字串的末尾,並把src字串的乙份拷貝新增到這個位置。同樣應該確保目標字元陣列剩餘的空間足以儲存整個源字串。

#include #include int

main(int argc, char **argv)

注意:strcpy和strcat函式都返回它們第1個引數的乙份拷貝,就是指向目標字元陣列的指標。在實際應用中,它們的返回值經常只是簡單的被忽略。

4、字串比較:比較兩個字串涉及對兩個字串對應的字元逐個進行比較,直到發現不匹配為止。

原型:int strcmp(char const *s1, char const *s2);

如果s1小於s2,返回值小於0;

如果s1大於s2,返回值大於0;

如果s1等於s2,返回值等於0;

5、其他字串函式

char *strncpy(char *dst, char const *src, size_t len);向dst寫入len個字元。如果strlen(src)的值小於len,dst陣列就用額外的nul位元組填充到len長度。如果strlen(src)的值大於或等於len,那麼只有len個字元被複製到dst中。注意,它的結果將不會以nul位元組結尾。

char *strncat(char *dst, char const *src, size_t len);

intstrncmp(char const *s1, char const *s2, size_t len);

演算法八 字串轉換整數 atoi

請你來實現乙個 atoi 函式,使其能將字串轉換成整數。首先,該函式會根據需要丟棄無用的開頭空格字元,直到尋找到第乙個非空格的字元為止。接下來的轉化規則如下 如果第乙個非空字元為正或者負號時,則將該符號與之後面盡可能多的連續數字字元組合起來,形成乙個有符號整數。假如第乙個非空字元是數字,則直接將其與...

JAVA學習筆記 八 字串類和方法

string的建立 public class test 和equals方法 public class test 幾種string的比較 public class test string類用法 public class test 將char string string s2 new string cs...

python基礎學習(八) 字串格式化

1.format 位置引數 love format i you i love you 指欄位位置引數 關鍵字引數 love format i you traceback most recent call last file line 1,in love format i you keyerror a...