您好,登錄后才能下訂單哦!
/* 字符串?:?有序的字符序列.本質?:?字符數組,不同的是,創建字符串時,系統默認在字符串末尾添加字符串結束標志"\0",因此字符串在內存中的實際長度比字符串的長度多一; ????定義格式?:?char?字符串名稱[字符串長度];????//注:?字符串長度指的是字符串在內存中的實際長度; ????初始化?:?1,定義的同時初始化,如?:?char?string[3]?=?"ab";????//此時字符串長度可省略; ?????????????2,定義后,在初始化,如?:?char?string[3];string?=?"ab";????//此時,不在允許一次性賦值,只能夠分別為每一個位置賦值 ?????????????3,通過數組定義字符串?:?char?string[3]?=?{'a',?'b',?'\0'};????//當然,如果賦值時,元素的長度小于字符串的定義長度,此時,"\0"可不寫, ????????????????????????????????????????????????????????????????????????????因為默認空白位置的值就是"0",而"0"就是"\0"的ASCII值; ????字符串的輸入輸出?: ????????輸出?:?printf("string?=?%s",string);????//輸出過程分析?:字符串的本質即為一個字符數組,因此作為實參時,實際上傳遞給函數的是字符串在內存中的地址, ?????????????????????????????????????????????????????????????????首先,判斷該地址指向的字符是否為"\0",如果是,什么也不輸出,跳出函數;如果不是,輸出該字符, ??????????????????????????????????????????????????????????????????地址加1,繼續上述判斷,直至遇到"\0"; ???????????????puts(string)????//原樣輸出,自動換行; ????????輸入?:?scanf("%s",&string)????//?注?:?接收字符串時,默認以空白字符結束,因此無法接收含有空白字符的字符串; ???????????????gets(string)????//注?:?此函數可接受含有空白字符的字符串,但該函數并不安全; ????????計算字符串長度?:?include?<string.h> ?????????????????????????size_t?length?=?strlen(string);????//原理?:?從傳入的地址開始,逐個判斷計數,直至"\0",利用指針可自己實現該函數; ????????字符串的連接?:?include?<string.h> ???????????????????????strcat(dest,?src)????//將src拼接至dest,由于是直接對dest進行操作,因此要求dest有足夠的長度接收src; ???????????????????????strncat(dest,?src,?size_t)????//size_t參數接收拼接至dest的src中字符的個數,目的在于保證dest的安全,當src的長度大于dest能夠接受的字符 ???????????????????????????????????????????????????????串長度時,有可能會擠占dest中"\0"的位置,導致字符串無法正確結束,而錯誤訪問其他內存空間; ????????字符串拷貝?:?strcpy(dest,?src) ?????????????????????strncpy(dest,?src,?size_t) ????????字符串比較?:?strcmp(dest,?src)????//返回0,則兩個字符串相等;返回整數,字符串不等,且首次遇到的不等位置的字符的ASCII值大于另一個字符串對應位置的字符的 ????????????????????????????????????????????ASCII值;如果小于0,字符串不等,且首次遇到的不等位置的字符的ASCII值小于另一個字符串對應位置的字符的ASCII值 ????????字符串數組?:?本質?:?二位數組; */
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。