字串是一種重要的資料型別,但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...