字串 堆實現

2021-07-25 23:38:00 字數 1956 閱讀 3976

#ifndef _string_h_

#define _string_h_

#define ok 1

#define error 0

#define true 1

#define false 0

#define overflow -1

typedef int status;

typedef struct

hstring;

status strassign(hstring &t, char *chars);

status clearstring(hstring &s);

int strlength(hstring s);

status concat(hstring &t,hstring s1,hstring s2);

status substring(hstring &sub,hstring s,int pos,int len);

status strindex(hstring s,hstring t,int pos);

void print(hstring s);

#endif

#include"string.h"

#include

#include

using namespace std;

//初始化字串

status strassign(hstring &t,char chars)

for (i = 0, c = chars; *c; ++i, ++c);

if(!(t.ch=(char*)malloc(i*sizeof(char))))

else

s.length=0;

return ok; }

//求字串的長度

int strlength(hstring s)

//連線兩個字串

status concat(hstring &t,hstring s1,hstring s2)

if(!(t.ch=(char*)malloc((s1.length+s2.length)*sizeof(char))))

else

if(sub.ch)

if(!len)

else

while(it.length-1)

else

} //遍歷

void print(hstring s)

break;

case 2:

cout << "請輸入位置:" << endl;

cin >> pos;

cout << "請輸入子串的長度:" << endl;

cin >> len;

if (substring(sub, s, pos, len) == error)

else

break;

case 3:

cin.sync();

cout << "請輸入chars4:" << endl;

cin.get(chars4, 3);

strassign(t, chars4);

cin.sync();

//print(t);

cout << "請輸入位置:" << endl;

cin >> pos;

if (strindex(s, t, pos) == error)

else

break;

case 0:

cout << "操作結束!" << endl;

break;

default:

cout << "輸入錯誤!" << endl; }

} while (select != 0);

clearstring(s);

clearstring(sub);

clearstring(s1);

clearstring(s2);

return 0; }

replace 實現字串替換 字串

字串是 不可改變 的,我們通過可以獲取字串指定位置的字元,但不能使用更改指定位置的字元,一旦更改,就會報錯。a abcedfghijklmnopqrstuvwxyz a 3 a traceback most recent call last file line 1,in a 3 a typeerro...

C語言字串 堆記憶體

是程序的乙個記憶體段 text data bss heap stack 由程式設計師手動管理 特點 足夠大,缺點 使用麻煩1 隨著程式的複雜,資料量變多 2 其它記憶體段的申請 釋放不受控制,堆記憶體的申請和釋放受控制注意 c語言中沒有控制堆記憶體的語句,只能使用c標準庫提供的函式 include ...

實現字串替換

題意 輸入3個字串,然後再第乙個字串中找出所有的第二個字串,第三個字串替換掉所有的第二個字串,最後輸出新的字串。本題不難的,就是使用strstr 庫函式尋找到子串的位置,然後進行替換就可以了。c語言指標操作 17 16 17 25 include include include include ch...