不使用库函数,编写程序实现字符串的基本运算: 求串的长度、两串连接、串比较、子串匹配
时间: 2024-12-21 14:22:21 浏览: 3
在不使用库函数的情况下,你可以通过遍历字符数组或使用指针的方式来实现字符串的基本运算:
1. **求串的长度**:
```c++
int stringLength(char* str) {
int len = 0;
while (str[len] != '\0') { // 遍历直到遇到空字符'\0'
len++;
}
return len;
}
```
2. **两串连接**(手动拼接):
```c++
char* concatenateStrings(const char* str1, const char* str2) {
int len1 = stringLength(str1);
int len2 = stringLength(str2);
char* result = new char[len1 + len2 + 1]; // 空余空间用于添加结束符
strcpy(result, str1); // 复制第一个字符串到结果
strcat(result, str2); // 连接第二个字符串
result[len1 + len2] = '\0'; // 添加结束符
return result;
}
```
3. **串比较**(逐字节比较):
```c++
int compareStrings(const char* str1, const char* str2) {
while (*str1 && *str2 && *str1 == *str2) {
str1++, str2++; // 相同则继续比较下一个字符,直至两者之一为空
}
return *str1 - *str2; // 如果其中一个为空,则返回非零值表示不等;若两者都已遍历完则相等,返回0
}
```
4. **子串匹配**(简单版本,忽略大小写):
```c++
bool isSubstring(const char* mainStr, const char* subStr) {
if (!subStr || !mainStr || stringLength(subStr) > stringLength(mainStr)) {
return false;
}
for (int i = 0; i <= stringLength(mainStr) - stringLength(subStr); ++i) {
bool match = true;
for (int j = 0; j < stringLength(subStr); ++j) {
if (tolower(mainStr[i+j]) != tolower(subStr[j])) {
match = false;
break;
}
}
if (match) {
return true;
}
}
return false;
}
```
阅读全文