C++語言數(shù)據(jù)結(jié)構(gòu) 串的基本操作實例代碼
更新時間:2017年04月15日 16:07:14 投稿:lqh
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu) 串的基本操作實例代碼的相關(guān)資料,需要的朋友可以參考下
C語言數(shù)據(jù)結(jié)構(gòu) 串的基本操作實例代碼
輸出結(jié)果:
實現(xiàn)代碼:
#include<iostream> using namespace std; typedef int Status; #define Max 20 #define OK 1 #define ERROR 0 #define OVERLOE -2 typedef struct//堆分配表示串 { char *ch; int length; }HString; //=================================================================== Status CreatHString(HString &H)//構(gòu)造字符串 { 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 //=================================================================== Status PrintHString(HString H)//輸出所輸入的字符串 { if (H.length == 0) { cout << "空串!" << endl; return ERROR; } else for (int i = 0; i < H.length; i++) cout << H.ch[i] << " "; cout << endl; return OK; }//PrintHString //=================================================================== Status HStringLength(HString H)//求字符串的長度 { cout << "您輸入的字符串長度為:" << endl; cout << H.length << endl; return OK; }//HStringLength //=================================================================== Status HStringCompare(HString H, HString T)//求兩個字符串長度差(絕對值) { cout << "兩個字符串的長度差為:" << endl; int L; L = H.length - T.length; if (L<0) cout << -L << endl; if (L>=0) cout << L << endl; return OK; }//HStringCompare //=================================================================== Status 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 //=================================================================== Status SubHString(HString &Sub, HString S, int pos,int len) {//用Sub返回串S的第pos個字符起長度為len的子串 if (pos<1 || pos>S.length) { cout << "輸入的位置有誤!" << endl; return ERROR; } if (len<0 || len>S.length - pos + 1) { cout << "輸入的長度有誤!" << endl; return ERROR; } if (!len) { Sub.ch == NULL; Sub.length = 0; } else { Sub.ch = (char *)malloc(len*sizeof(char)); for (int i = 0; i < len ; i++) Sub.ch[i] = S.ch[pos + i - 1]; Sub.length = len; } return OK; }//SubHString //=================================================================== Status 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; cout << "請輸入一個字符串(按回車鍵結(jié)束):" << endl; CreatHString(H); cout << "現(xiàn)在串中的字符為:" << endl; PrintHString(H); HStringLength(H); cout << "請再輸入一個字符串(按回車鍵結(jié)束):" << endl; CreatHString(T); HStringCompare(H, T); ConcatHString(S, H, T); cout << "現(xiàn)在串中的字符為:" << endl; PrintHString(S); HString Sub; int pos, len; cout << "請輸入截取位置pos及長度len:" << endl; cin >> pos >> len; SubHString(Sub, S, pos, len); cout << "截取的子串為:" << endl; PrintHString(Sub); ClearHString(S); cout << "檢驗S清空后是否為空:" << endl; PrintHString(S); }//main
您可能感興趣的文章:
- C語言數(shù)據(jù)結(jié)構(gòu)之模式匹配字符串定位問題
- C語言數(shù)據(jù)結(jié)構(gòu)實現(xiàn)字符串分割的實例
- C語言實現(xiàn)數(shù)據(jù)結(jié)構(gòu)串(堆分配存儲表示法)實例詳解
- C數(shù)據(jù)結(jié)構(gòu)中串簡單實例
- C語言數(shù)據(jù)結(jié)構(gòu)中串的模式匹配
- JavaScript數(shù)據(jù)結(jié)構(gòu)中串的表示與應(yīng)用實例
- 數(shù)據(jù)結(jié)構(gòu)基本概念和術(shù)語之位字節(jié)、字、位串、元素等
- C語言數(shù)據(jù)結(jié)構(gòu)之動態(tài)分配實現(xiàn)串
相關(guān)文章
C語言使用openSSL庫AES模塊實現(xiàn)加密功能詳解
這篇文章主要介紹了C語言使用openSSL庫AES模塊實現(xiàn)加密功能,詳細分析了C語言加密的相關(guān)概念、原理及AES模塊加密具體實現(xiàn)技巧,需要的朋友可以參考下2017-05-05