您好,登錄后才能下訂單哦!
小編給大家分享一下C語(yǔ)言中字符串怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
零個(gè)或多個(gè)字符組成的有限序列
串的比較實(shí)際上是在比較串中字符的編碼
存在某個(gè)k < min(n,m),使得ai = bi (i = 1,2,3,4..k)
如果 ak < bk --> 那么srt1 < srt2 (反之也成立)
除去相等的字符,在第一個(gè)不相等的字符位置以Ascii碼進(jìn)行比較
串的順序存儲(chǔ)結(jié)構(gòu)示意圖
串的順序存儲(chǔ)結(jié)構(gòu)是用一組地址連續(xù)的存儲(chǔ)單元來(lái)存儲(chǔ)串中的字符序列
typedef struct sqString{ char* ch; //若串為空,則按串長(zhǎng)分配存儲(chǔ)區(qū) //否則ch = NULL int length;//串長(zhǎng) }sqString;
/** 狀態(tài)碼 **/ #define TRUE 1 #define FALSE 0 #define EQ 0 #define GT 1 //大于 #define LT -1 //小于
#define MAX_SIZE 1024 typedef struct{ char ch[MAX_SIZE + 1]; //定長(zhǎng)方式實(shí)現(xiàn)了字符串的順序結(jié)構(gòu)--缺點(diǎn)是浪費(fèi)空間 int length; }SString;
/** 串的堆式順序存儲(chǔ)結(jié)構(gòu)(Heap)**/ typedef struct{ char * ch; //如果是非空串,那么就按照指定長(zhǎng)度分配內(nèi)存,否則ch就指向NULL int length; //串當(dāng)前長(zhǎng)度 }HString;
/** 為串str賦值,值為字符串常量chars **/ void StrAssign_HeapString(HString * str,char * chars){ int len = strlen(chars); if(!len) return ERROR; InitString_HeapString(str); //動(dòng)態(tài)為字符串分配空間 str->ch = (char*)malloc(len * sizeof(char)); if(!str->ch){ exit(OVERFLOW); //內(nèi)存溢出,分配失敗 } //逐個(gè)將字符串輸入所分配的空間中 for(int i = 0;i < len ; i++) { str->ch[i] = chars[i]; } str->length = len; //將長(zhǎng)度賦值 return OK; }
str1 == str2 返回0 ; str1 < str2 返回-1 ; str1 > str2 返回1
Status Strcmp_HeapString(HString * str1,HString * str2){ for(int i = 0;i < str->length && i < str2->length; i ++){ //遇到不同的字符就直接比較Ascii if(str->ch[i] != str[2]->ch[i]){ //大于則返回整數(shù),小于則返回負(fù)數(shù) return str->ch[i] - str[2]->ch[i]; } } //字符都相等但是長(zhǎng)度不等,就比較長(zhǎng)度 return str1->length - str2->length; }
以上是“C語(yǔ)言中字符串怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。