空串和空白串
答
●空串是指不包含任何字符的串
空白串是指包含一個或多個空格的串
●串常量是指在程序中只可引用但不可改變其值的串
串變量是可以在運行中改變其值的
●主串和子串是相對的
●靜態分配的順序串是指串的存儲空間是確定的
動態分配的順序串是在編譯時不分配串值空間
●目標串和模式串:在串匹配運算過程中
●有效位移和無效位移
char s
(
p=stchr(s
(
strcpy(s
(
(
(
解
(
因此:
執行p=stchr(s
執行p=strchr(s
` 執行p=strchr(s
(
在執行strcpy(s
在執行strcat(s
在執行完strcat(s
(
(
(
解
所有的有效位移i的值為
算法NaveStrMatch(T
解
算法如下
void StrInsert(char *S
{//將串T插入到串S的第i個位置上
char *Temp;
if(i<=strlen(S))
{
Temp=(char *)malloc(sizeof(char[Maxsize]));// 設置一個臨時串
strcpy(Temp
strcpy(&S[i]
strcat(S
free( Temp );
}
}
解
算法如下
void StrDelete(char *S
{ //串刪除
char Temp[Maxsize];//定義一個臨時串
if(i+m<strlen(S))
{
strcpy (Temp
strcpy( &S[i]
}
else if(i+m>=strlen(S)&& i<strlen(S))
{
strcpy(&S[i]
}
}
解
HString 是指以動態分配順序串為存儲表示
typedef struct {
char *ch;
int length;
}HString;
void *substr( HString *sub
{//用sub返回串s的第pos個字符起長度為len的子串
//pos的合法位置為
int i;
if (pos<
Error(
if (s
sub
else sub
sub
for(i=
sub
}
a b c d e f g h i j k l m n o p q r s t u v w x y z
n g z q t c o b m u h e l k p d a w x f y i v r s j
則字符串
解
加密算法可以用兩個串中字符的一一對應關系來實現
設字母映射表的存儲結構如下
#define MaxStrSize
typedef struct{
char Original[MaxStrSize]; //可容納
char Cipher[MaxStrSize]; //可容納
int length;
}SeqString;
void Encrypt( SeqString codetable)
{//加密算法
char ch;
int i;
while((ch=getchar())!=
{ i=
while (i<codetable
i++;
if (i>=codetable
Error(
else
printf(
}
printf(
}
void Decipher(SeqString Original
{//解密算法
char ch;
while((ch=getchar())!=
{ i=
while (i<codetable
i++;
if (i>=codetable
Error(
else
printf(
}
printf(
}
解
由於S和P的長度不一定相等
void StrReplace (char *T
{//串替換
int i
m=strlen (P);//取得子串長度
i=StrMatch(T
StrDelete( T
From:http://tw.wingwit.com/Article/program/sjjg/201311/23952.html