字串 堆分配基本操作

2021-09-25 15:44:11 字數 2495 閱讀 5191

堆分配的儲存特點

1、依然是以一組位址連續的儲存單元存放串值字串行

2、儲存單元由動態分配

儲存結構

typedef

struct

hstring;

初始化

在這裡,使用for (i = 0, c = chars; *c; c++, i++);這是乙個單獨的語句,沒有**塊。相當於for (i = 0, c = chars; *c; c++, i++){}

但是在最開始的時候我忘記了加分號,導致for迴圈和它下面的if語句為一體。

void

initstr

(hstring &t)

void

strassign

(hstring &t,

char

*chars)

//把傳入的字元給t

//如果該字串為空

//則指標為null,長度為0

else

t.length = i;

//最後更新length

}}

列印字串/字串長度

在求字串長度時:

假設傳入引數為「我是傻子」

那麼字串的長度!=4

而是等於8

原因:漢字與字元位元組數不相同,漢字佔兩個位元組。所以長度為8

void

strshow

(hstring t)

printf

("\n");

}int

length

(hstring t)

字串比較
int

strcompare

(hstring t, hstring h)

//如果t比h大,返回正數

//如果小,返回負數

//如果相等,返回0

//如果兩個都相等

//返回0

return t.length - h.length;

}

清空字串
void

clearstr

(hstring &t)

//只需要釋放原指標空間,再將指標置為0

t.length =0;

//初始化長度為0

}

連線兩個字串
void

concatstr

(hstring &t, hstring s1, hstring s2)

int j = s1.length;

//在s1的尾部繼續放s2

for(

int m =

0; m < s2.length; m++

) t.length = s1.length + s2.length;

//最後更新連線好以後新字串的長度

}

取子串
void

substring

(hstring t, hstring &sub,

int pos,

int len)

sub.length = len;

}

插入字串
void

strinsert

(hstring &t, hstring insertstr,

int pos)

else

exit(-

1);//首先給他挪位置

for(

int i = t.length -

1; i >pos-

1; i--

)//當i還沒走到當前要插入的位置時,從最後乙個開始,每乙個都往後挪

//int j = pos - 1;//錯誤

//錯誤是因為,函式要求在pos之前插入子串,這樣最後不是在騰出來的地方放,而是覆蓋了前面乙個字元

int j = pos;

for(

int i =

0; i < insertstr.length; i++

) t.length +

= insertstr.length;

//最後更新新串的長度

}

空/複製
bool emptystr

(hstring t)

void

strcopy

(hstring &t, hstring s)

t.length = s.length;

//更新新串長度

}

找子串
status index

(hstring s, hstring t)

//s:父親,t:子串

return i;

//否則返回父串的第i個位置後為此字串}}

return0;

}

字串基本操作

include unsigned int strlenth char s 獲取字串長度 return lenth void strcopy char target,char source 字串拷貝 int strcompare char s,char t 字串比較,s t,則返回1 s t,則返回0...

字串基本操作

遞迴求字串長度 int recurlength char str 字串中最後乙個引數的長度 int lastwordlen char str,int len int lastwordlen char str return lastlen 字串記憶體的拷貝 實現memmove函式 char my me...

字串基本操作

判斷字串開頭結尾字元 string.startswith l 判斷字串是否以l開頭 string.endswith n 判斷字串是否以n結尾 返回字串中字元的位置 string.find x 找到這個字元返回下標,多個時返回第乙個 不存在的字元返回 1 string.index x 找到這個字元返回...