溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中字符串怎么用

發布時間:2022-03-04 10:26:32 來源:億速云 閱讀:197 作者:小新 欄目:開發技術

小編給大家分享一下C語言中字符串怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

串的定義

零個或多個字符組成的有限序列

C語言中字符串怎么用

C語言中字符串怎么用

串的比較 

串的比較實際上是在比較串中字符的編碼

存在某個k < min(n,m),使得ai = bi (i = 1,2,3,4..k)

如果 ak < bk  -->  那么srt1 < srt2 (反之也成立)

除去相等的字符,在第一個不相等的字符位置以Ascii碼進行比較

串的抽象數據類型

C語言中字符串怎么用

串的順序存儲結構示意圖

C語言中字符串怎么用

串的順序存儲結構是用一組地址連續的存儲單元來存儲串中的字符序列 

C語言中字符串怎么用

typedef struct sqString{
    char* ch;  //若串為空,則按串長分配存儲區  
               //否則ch = NULL
    int length;//串長
}sqString;

串的初始化

相關定義初始化

C語言中字符串怎么用

/** 狀態碼  **/
#define TRUE 1
#define FALSE 0
#define EQ 0
#define GT 1  //大于
#define LT -1 //小于

定長類初始化

C語言中字符串怎么用

#define MAX_SIZE 1024
typedef struct{
    char ch[MAX_SIZE + 1];  
    //定長方式實現了字符串的順序結構--缺點是浪費空間
    int length;
 
}SString;

串的堆式順序存儲結構(Heap)

C語言中字符串怎么用

/** 串的堆式順序存儲結構(Heap)**/
typedef struct{
    char * ch;  
    //如果是非空串,那么就按照指定長度分配內存,否則ch就指向NULL
    int length;   //串當前長度
}HString;

初始化堆字符串 

賦值操作

/** 為串str賦值,值為字符串常量chars **/
void StrAssign_HeapString(HString * str,char * chars){
    int len = strlen(chars);
    if(!len) return ERROR;
    InitString_HeapString(str);
    //動態為字符串分配空間
    str->ch = (char*)malloc(len * sizeof(char));
    if(!str->ch){
        exit(OVERFLOW); //內存溢出,分配失敗
    }
    //逐個將字符串輸入所分配的空間中
    for(int i = 0;i < len ; i++)
    {
        str->ch[i] = chars[i];
    }
    str->length = len;  //將長度賦值
    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]){
                //大于則返回整數,小于則返回負數
            return str->ch[i] - str[2]->ch[i];
        }
    }
    //字符都相等但是長度不等,就比較長度
    return str1->length - str2->length;
}

以上是“C語言中字符串怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女