串的基本計算

2022-07-31 18:03:08 字數 2489 閱讀 9277

#include

#include

//typedef int status;

#define max 20

#define ok 1

#define error 0

#define overloe -2

typedef struct//堆分配表示串

char *ch;

int length;

}hstring;

int creathstring(hstring &h)//構造字串

h.length = 0;

h.ch = (char *)malloc(max*sizeof(char));

for (int i = 0; i < max; i++)

h.ch[i]=getchar();

h.length++;

if (getchar() == '\n')

break;

return ok;

}//creathstring

int printhstring(hstring h)//輸出所輸入的字串

if (h.length == 0)

printf( "空串!" );

return error;

else

for (int i = 0; i < h.length; i++)

printf("%c",h.ch[i]);

printf("\n");

return ok;

}//printhstring

int hstringlength(hstring h)//求字串的長度

printf( "您輸入的字串長度為:" );

printf("    %d ",h.length);

return ok;

}//hstringlength

int hstringcompare(hstring h, hstring t)//求兩個字串長度差(絕對值)

printf( "兩個字串的長度差為:" );

int l;

l = h.length - t.length;

if (l<0)

printf("%d",-l);

if (l>=0)

printf("%d",l);

return ok;

}//hstringcompare

int concathstring(hstring &s, hstring h, hstring t)//鏈結h和t

if (!(s.ch = (char *)malloc((h.length + t.length)*sizeof(char))))

exit(overloe);

for (int i = 0; i < h.length; i++)

s.ch[i] = h.ch[i];

s.length = h.length + t.length;

for (int j = h.length; j < s.length; j++)

s.ch[j] = t.ch[j-h.length];

return ok;

}//concathstring

int subhstring(hstring &sub, hstring s, int pos,int len)

//subhstring

int clearhstring(hstring &h)//將h清為空串

if (h.ch)

free(h.ch);

h.ch = null;

h.length = 0;

return ok;

}//clearhstring

void main()

hstring s,h,t;

printf( "請輸入乙個字串(按回車鍵結束):" );

creathstring(h);

printf("現在串中的字元為:" );

printhstring(h);

hstringlength(h);

printf( "請再輸入乙個字串(按回車鍵結束):" );

creathstring(t);

hstringcompare(h, t);

concathstring(s, h, t);

printf("現在串中的字元為:" );

printhstring(s);

hstring sub;

int pos, len;

printf( "請輸入擷取位置pos及長度len:" );

scanf( "%d%d",&pos,&len);

subhstring(sub, s, pos, len);

printf( "擷取的子串為:" );

printhstring(sub);

clearhstring(s);

printf ("檢驗s清空後是否為空:" );

printhstring(s);

}//main

串 堆串的基本操作

順序串為靜態順序儲存表示,在串的插入,連線過程中如果長度超過了maxsize就會截掉一部分。因此可以使用動態分配儲存表示串 pragma once include include includetypedef struct heapstring void initsring heapstring s...

串的基本操作

include include include include define maxn 50 define ok 1 define error 0 typedef struct strnode snode void creat snode char 建立串 int getsubstr snode i...

串的基本操作

串的基本操作 前記 這一章課件裡主要講了串的屬性和一些常用的操作。課件裡面是通過偽 的方式來進行描述,這樣有利於同學們的理解,以及能夠適用於各種程式語言。下面就針對c 語言對這些基本操作做乙個具體的實現,大家在運用中可以參考。mystring.h ifndef mystring h define m...