strcopy和substr
时间: 2023-07-19 10:20:48 浏览: 197
`strcpy` 和 `substr` 都是字符串操作函数。
`strcpy` 函数用于将一个字符串复制到另一个字符串中。其原型为:
```c
char* strcpy(char* dest, const char* src);
```
其中 `dest` 为目标字符串,`src` 为源字符串。该函数会将 `src` 字符串中的字符复制到 `dest` 字符串中,直到遇到字符串结束符 `\0` 为止。
`substr` 函数用于截取一个字符串的子串。其原型为:
```c
char* substr(const char* str, int start, int length);
```
其中 `str` 为原字符串,`start` 为子串的起始位置,`length` 为子串的长度。该函数会从 `str` 字符串中的 `start` 位置开始,截取长度为 `length` 的子串,并返回该子串的指针。需要注意的是,返回的子串指针指向的内存空间由函数内部分配,需要在使用完毕后释放。
相关问题
实现顺序串的各种基本运算的算法 肉容:编写一个程序 sqstring.cpp实现顺序串的各种基本运算,并在此基础上设计完成以下功能。 (1) 建立串s="abcdefghijklmn"和串 s1="xyz"。 (2) 输出串 s。 (3) 输出串s的长度。 (4) 在串s的第 9个字符的位置插入串 s1 而产生串s2。 (5) 输出串 s2。 (6) 删除串s从第 2个字符开始的 5 个字符而产生串s2。 (7) 输出串s2。 (8) 将串s从第2个字符开始的 5 个字符替换成 s1 而产生串s2。 (9) 输出串 s2。 (10) 提取串s 从第 2 个字符开始的 10 个字符而产生串s3。 (11) 输出串 s3。 (12) 将串s1 和串 s2 连接起来而产生串 s4。 (13) 输出串 s4。 基本运算包含函数如下: StrAssign(SgString &s, char cstr[ ]):由串常量 cstr 创建顺序串 s。 StrCopy(SgString &s, SgString t):将顺序串 t复制到串s。 StrEqual(SgString s, SaString t):判断两个顺序串s和t 是否相同。 StrLength(SgString s):求顺序串 s 的长度。 Concat(SgString s, SString t):返回将顺序串 t 连接到顺序串s之后构成的新串。 SubStr(SgString s, int i, int i):返回由顺序串s的第i个字符开始的j个字符构成的新串。 InsStr(SqString sl, int i, SgString s2):返回将顺序串s2插入顺序串s1的第i个位置构成的新串。 DelStr(SqString s, int i, int j):返回删除顺序s从第i个字符开始的j个字符构成的新串。 RepStr(SqString s, int i, int j, SgString t):返回将顺序串s从第i个字符开始的j个字符替换成顺序串 t 构成的新串。 DispStr(SgString s):输出顺序串 s 的所有元素。
, char*): 将字符串常量赋值给顺序串。
StrCopy(SgString, SgString): 将一个顺序串复制到另一个顺序串。
StrLength(SgString): 返回顺序串的长度。
StrInsert(SgString&, int, SgString): 在顺序串的某个位置插入一个子串。
StrDelete(SgString&, int, int): 删除顺序串的某一段子串。
StrReplace(SgString&, int, int, SgString): 将顺序串的某一段子串替换成另一个子串。
StrSubstr(SgString, int, int): 从顺序串中提取某一段子串。
StrConcat(SgString&, SgString, SgString): 将两个顺序串连接成一个串。
class SqString: #顺序串类 def __init__(self): #构造方法 self.data=[None]*MaxSize #存放串中字符 self.size=0 #串中字符个数 #串的基本运算算法 def StrAssign(self,cstr): #创建一个串 for i in range(len(cstr)): self.data[i]=cstr[i] self.size=len(cstr) def StrCopy(self): #串复制 s=SqString() for i in range(self.size): s.data[i]=self.data[i] s.size=self.size return s def getsize(self): #求串长 return self.size def __getitem__(self,i): #求序号为i的元素 assert 0<=i<self.size #检测参数i正确性的断言 return self.data[i] def __setitem__(self,i,x): #设置序号为i的元素 assert 0<=i<self.size #检测参数 self.data[i]=x def Concat(self,t): #串连接 s=SqString() #新建一个空串 s.size=self.size+t.getsize() for i in range(self.size): #将当前串data[0..str.size-1]->s s.data[i]=self.data[i] for i in range(t.getsize()): #将t.data[0..t.size-1]->s s.data[self.size+i]=t.data[i] return s #返回新串s def SubStr(self,i,j): #求子串
def SubStr(self,i,j):
assert i >= 0 and j >= 0 and i+j <= self.size, "Index out of range" # 检测参数i, j的正确性
s = SqString() # 创建一个新串
s.size = j # 设置新串的长度为j
for k in range(j): # 将当前串中的第i到第i+j-1个字符复制到新串中
s.data[k] = self.data[i+k]
return s # 返回新串
阅读全文