下面是字串的一些基本操作,但是筆者在這裡流下了一點操作,看看哪位讀者能夠說明錯誤的地方在**,怎麼改進它。
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"
#define ok 1
#define error 0
#define true 1
#define false 0
#define maxsize 40 /* 儲存空間初始分配量 */
typedef int status;/* status是函式的型別,其值是函式結果狀態**,如ok等 */
typedef int elemtype;/* elemtype型別根據實際情況而定,這裡假設為int */
typedef char string[maxsize+1]; /* 0號單元存放串的長度 */
/* 生成乙個其值等於chars的串t */
status strassign(string t,char *chars)
}/* 由串s複製得串t */
status strcopy(string t,string s)
/* 若s為空串,則返回true,否則返回false */
status strempty(string s)
/* 初始條件: 串s和t存在 */
/* 操作結果: 若s>t,則返回值》0;若s=t,則返回值=0;若sint i;
for(i=1;i<=s[0]&&i<=t[0];++i)
if(s[i]!=t[i])
return s[i]-t[i];
return s[0]-t[0];
}/* 返回串的元素個數 */
int strlength(string s)
/* 初始條件:串s存在。操作結果:將s清為空串 */
status clearstring(string s)
/* 用t返回s1和s2聯接而成的新串。若未截斷,則返回true,否則false */
status concat(string t,string s1,string s2)
else
}/* 用sub返回串s的第pos個字元起長度為len的子串。 */
status substring(string sub,string s,int pos,int len)
/* 返回子串t在主串s中第pos個字元之後的位置。若不存在,則函式返回值為0。 */
/* 其中,t非空,1≤pos≤strlength(s)。 */
int index(string s, string t, int pos)
else /* 指標後退重新開始匹配 */
}if (j > t[0])
return i-t[0];
else
return 0;
}/* t為非空串。若主串s中第pos個字元之後存在與t相等的子串, */
/* 則返回第乙個這樣的子串在s中的位置,否則返回0 */
int index2(string s, string t, int pos)
}return 0; /* 若無子串與t相等,返回0 */
}/* 初始條件: 串s和t存在,1≤pos≤strlength(s)+1 */
/* 操作結果: 在串s的第pos個字元之前插入串t。完全插入返回true,部分插入返回false */
status strinsert(string s,int pos,string t)
else
}/* 初始條件: 串s存在,1≤pos≤strlength(s)-len+1 */
/* 操作結果: 從串s中刪除第pos個字元起長度為len的子串 */
status strdelete(string s,int pos,int len)
/* 初始條件: 串s,t和v存在,t是非空串(此函式與串的儲存結構無關) */
/* 操作結果: 用v替換主串s中出現的所有與t相等的不重疊的子串 */
status replace(string s,string t,string v)
}while(i);
return ok;
}/* 輸出字串t */
void strprint(string t)
int main()
printf("串長為%d 串空否?%d(1:是 0:否)\n",strlength(s1),strempty(s1));
strcopy(s2,s1);
printf("拷貝s1生成的串為: ");
strprint(s2);
printf("請輸入串s2: ");
k=strassign(s2,"efghijk");
if(!k)
i=strcompare(s1,s2);
if(i<0)
s='<';
else if(i==0)
s='=';
else
s='>';
printf("串s1%c串s2\n",s);
k=concat(t,s1,s2);
printf("串s1聯接串s2得到的串t為: ");
strprint(t);
if(k==false)
printf("串t有截斷\n");
clearstring(s1);
printf("清為空串後,串s1為: ");
strprint(s1);
printf("串長為%d 串空否?%d(1:是 0:否)\n",strlength(s1),strempty(s1));
printf("求串t的子串,請輸入子串的起始位置,子串長度: ");
i=2;
j=3;
printf("%d,%d \n",i,j);
k=substring(s2,t,i,j);
if(k)
printf("從串t的第pos個字元起,刪除len個字元,請輸入pos,len: ");
i=4;
j=2;
printf("%d,%d \n",i,j);
strdelete(t,i,j);
printf("刪除後的串t為: ");
strprint(t);
i=strlength(s2)/2;
strinsert(s2,i,t);
printf("在串s2的第%d個字元之前插入串t後,串s2為:\n",i);
strprint(s2);
i=index(s2,t,1);
printf("s2的第%d個字母起和t第一次匹配\n",i);
substring(t,s2,1,1);
printf("串t為:");
strprint(t);
concat(s1,t,t);
printf("串s1為:");
strprint(s1);
replace(s2,t,s1);
printf("用串s1取代串s2中和串t相同的不重疊的串後,串s2為: ");
strprint(s2);
return 0;
}
字串的一些基本操作
string 過載了運算子,可以直接比較大小 charstrcmp s1,s2 返回s1 s2 strncat s1,s2,len charchar strstr s1,s2 函式用於判斷字串str2是否是str1的子串。如果是,則該函式返回 str1字串從 str2第一次出現的位置開始到 str1...
字串的一些操作
一,把字串的首字母大寫返回乙個新的字串 1.1簡單寫法,把乙個單詞的首字母大寫 string.prototype.firstuppercase function 1.2字串中所有單詞首字母大寫,非首字母小寫 string.prototype.firstuppercase function 另一種寫法...
C 字串的一些操作
1 定義和構造初始化 string 提供了很多建構函式,可以以多種方式來初始化string字串 5.比較操作 compare 等 string的比較操作,按字元在字典中的順序進行逐一比較。在字典前面的字元小於後面的字元。include includeusing namespace std int m...