用c/c++实现,建立一个串,实现串的基本操作。主要有: 1)判串长: 返回串s的元素个数。 2)判空串: 若串s为空串,则返回true 3)串赋值:现有串s,空串 t,实现将s赋值给t的操作 4)串连接:现有串s和 t,实现将t链接到串s之后的操作。 5)串比较: 依次比较2个串s和t,若长度相同且字符相同,则串相同,返回0,若s>t,则返回值>0, 若s<t,则返回值<0. 6)串替换:在主串s中用子串v替换所有的子串t 7)串插入:在主串s中的给定位置pos插入子串t 8)取子串: 将串s中从起始位置pos开始长度len的字符串放入另一个串t 9)串删除: 删除串s中的子串t。 10)求子串位置:从主串s中取出从第i个位置开始、长度和串t相同的子串,和t进行比较,若相等,则t在s中的位置值为i。
时间: 2023-05-20 17:05:44 浏览: 168
1)判串长:
```c
int StrLength(char* s){
int len = 0;
while(s[len] != '\0'){
len++;
}
return len;
}
```
2)判空串:
```c
bool IsEmpty(char* s){
if(s[0] == '\0'){
return true;
}
return false;
}
```
3)串赋值:
```c
void StrAssign(char* s, char* t){
int i = 0;
while(t[i] != '\0'){
s[i] = t[i];
i++;
}
s[i] = '\0';
}
```
4)串连接:
```c
void StrConcat(char* s, char* t){
int i = 0;
while(s[i] != '\0'){
i++;
}
int j = 0;
while(t[j] != '\0'){
s[i] = t[j];
i++;
j++;
}
s[i] = '\0';
}
```
5)串比较:
```c
int StrCompare(char* s, char* t){
int i = 0;
while(s[i] != '\0' && t[i] != '\0'){
if(s[i] > t[i]){
return 1;
}
else if(s[i] < t[i]){
return -1;
}
i++;
}
if(s[i] == '\0' && t[i] == '\0'){
return 0;
}
else if(s[i] == '\0'){
return -1;
}
else{
return 1;
}
}
```
6)串替换:
```c
void StrReplace(char* s, char* t, char* v){
int len_t = StrLength(t);
int len_v = StrLength(v);
int i = 0;
while(s[i] != '\0'){
bool flag = true;
for(int j = 0; j < len_t; j++){
if(s[i+j] != t[j]){
flag = false;
break;
}
}
if(flag){
for(int j = 0; j < len_v; j++){
s[i+j] = v[j];
}
i += len_v;
}
else{
i++;
}
}
}
```
7)串插入:
```c
void StrInsert(char* s, int pos, char* t){
int len_s = StrLength(s);
int len_t = StrLength(t);
for(int i = len_s; i >= pos; i--){
s[i+len_t] = s[i];
}
for(int i = 0; i < len_t; i++){
s[pos+i] = t[i];
}
}
```
8)取子串:
```c
void SubString(char* s, int pos, int len, char* t){
for(int i = 0; i < len; i++){
t[i] = s[pos+i];
}
t[len] = '\0';
}
```
9)串删除:
```c
void StrDelete(char* s, char* t){
int len_t = StrLength(t);
int i = 0;
while(s[i] != '\0'){
bool flag = true;
for(int j = 0; j < len_t; j++){
if(s[i+j] != t[j]){
flag = false;
break;
}
}
if(flag){
for(int j = i; j < StrLength(s)-len_t; j++){
s[j] = s[j+len_t];
}
s[StrLength(s)-len_t] = '\0';
}
else{
i++;
}
}
}
```
10)求子串位置:
```c
int Index(char* s, char* t, int i){
int len_s = StrLength(s);
int len_t = StrLength(t);
while(i <= len_s-len_t){
bool flag = true;
for(int j = 0; j < len_t; j++){
if(s[i+j] != t[j]){
flag = false;
break;
}
}
if(flag){
return i;
}
else{
i++;
}
}
return -1;
}
```
阅读全文