(8)用指针作为参数,自定义两数 stringcat (char * ,char *),实现字符串的连接。
时间: 2024-05-01 07:21:51 浏览: 9
可以按照以下方式实现两数字符串的连接:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void stringcat(char* str1, char* str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
for (int i = 0; i < len2; i++) {
str1[len1 + i] = str2[i];
}
str1[len1 + len2] = '\0';
}
int main() {
char str1[100] = "Hello, ";
char str2[100] = "world!";
stringcat(str1, str2);
cout << str1 << endl; // 输出:Hello, world!
return 0;
}
```
在这里,我们定义了一个函数 `stringcat`,它接受两个 `char*` 类型的参数,分别表示两个字符串。我们首先计算出第一个字符串的长度,然后将第二个字符串中的每个字符拷贝到第一个字符串的末尾,最后在第一个字符串的末尾添加一个空字符,表示字符串的结束。
在 `main` 函数中,我们定义两个字符串 `str1` 和 `str2`,并将它们传递给 `stringcat` 函数。最后,我们输出连接后的字符串 `str1`。
相关问题
char *ReplaceString(char * str, char * s1, char * s2)
这是一个用于替换字符串中指定子字符串的函数。函数接受三个参数:原始字符串指针,需要替换的子字符串指针和替换成的子字符串指针。函数返回一个指向新字符串的指针。
下面是函数的代码实现:
```c
char *ReplaceString(char * str, char * s1, char * s2) {
char *result;
int i, cnt = 0;
int s1_len = strlen(s1);
int s2_len = strlen(s2);
// 计算需要替换的子字符串的数量
for (i = 0; str[i] != '\0'; i++) {
if (strstr(&str[i], s1) == &str[i]) {
cnt++;
i += s1_len - 1;
}
}
// 为新字符串分配内存
result = (char *)malloc(i + cnt * (s2_len - s1_len) + 1);
i = 0;
while (*str) {
// 如果找到需要替换的子字符串,则将其替换为新字符串
if (strstr(str, s1) == str) {
strcpy(&result[i], s2);
i += s2_len;
str += s1_len;
}
else
result[i++] = *str++;
}
result[i] = '\0';
return result;
}
```
使用示例:
```c
char str[] = "The quick brown fox jumps over the lazy dog";
char *result = ReplaceString(str, "fox", "cat");
printf("%s", result);
free(result);
```
该示例会将字符串中的“fox”替换为“cat”,并输出结果:“The quick brown cat jumps over the lazy dog”。函数会动态分配内存,因此使用完毕后需要使用free()函数释放内存。
char *cat(char *dest, const char *src); 头文件
这个函数的头文件应该是在C语言中的<string.h>中定义的。它的功能是将源字符串(src)连接到目标字符串(dest)的末尾,并返回连接后的字符串。函数的声明如下:
```c
char *cat(char *dest, const char *src);
```
其中,`dest`是目标字符串,`src`是源字符串。函数会将源字符串的内容复制到目标字符串的末尾,并返回指向目标字符串的指针。