用c语言编写自定义函数void tailAppend(char s1[],char s2[]),,其功能是将字符串s2接到字符串s1之后(不调用strcpy或strcat函数)
时间: 2024-02-03 07:14:58 浏览: 27
下面是一个用C语言编写的自定义函数`void tailAppend(char s1[], char s2[])`,可以将字符串s2接到字符串s1之后:
```c
#include <stdio.h>
void tailAppend(char s1[], char s2[]) {
int i, j;
for (i = 0; s1[i] != '\0'; i++) {} // 找到s1的结尾
for (j = 0; s2[j] != '\0'; j++) {
s1[i + j] = s2[j]; // 将s2中的字符一个个拷贝到s1的结尾后
}
s1[i + j] = '\0'; // 注意字符串结尾符号
}
int main() {
char s1[100] = "hello, ";
char s2[] = "world!";
tailAppend(s1, s2);
printf("%s\n", s1); // 输出 "hello, world!"
return 0;
}
```
这个函数的实现方法很简单,就是先找到s1的结尾,然后从s2的开头一个个拷贝字符到s1的结尾后,并在最后加上字符串结尾符'\0'。需要注意的是,s1数组必须要有足够的空间来存放新的字符串,否则可能会导致内存溢出等问题。
相关问题
用c语言编写自定义函数完成两个字符串的连接功能,要求自定义函数形参采用指针。
可以使用以下代码实现:
```c
#include <stdio.h>
#include <string.h>
void mystrcat(char *s1, char *s2) {
while (*s1 != '\0') {
s1++;
}
while (*s2 != '\0') {
*s1 = *s2;
s1++;
s2++;
}
*s1 = '\0';
}
int main() {
char s1[100] = "Hello";
char s2[] = "World";
mystrcat(s1, s2);
printf("%s\n", s1);
return 0;
}
```
在上面的代码中,`mystrcat` 函数接受两个指向字符数组的指针 `s1` 和 `s2`,并将 `s2` 中的字符连接到 `s1` 的末尾。函数的实现相当简单,只需使用指针逐个字符地复制 `s2` 中的字符到 `s1` 中,直到 `s2` 的末尾,并在 `s1` 的末尾添加一个空字符来终止字符串。
c语言编写自定义函数完成两个字符串的连接功能,要求自定义函数形参采用指针。
好的,下面是另外一份示例代码:
```c
#include <stdio.h>
#include <string.h>
void str_concat(char *s1, char *s2, char *result) {
int len1 = strlen(s1);
int len2 = strlen(s2);
int i, j;
// 将s1中的字符复制到result中
for (i = 0; i < len1; i++) {
result[i] = s1[i];
}
// 将s2中的字符复制到result中
for (j = 0; j < len2; j++) {
result[i+j] = s2[j];
}
// 在result最后一个字符后添加'\0'
result[i+j] = '\0';
}
int main() {
char s1[20] = "hello, ";
char s2[20] = "world!";
char result[40];
str_concat(s1, s2, result);
printf("%s\n", result);
return 0;
}
```
以上代码中,自定义函数 `str_concat` 接收三个参数:`char *s1`,`char *s2` 和 `char *result`,分别表示需要连接的两个字符串和连接后的结果字符串。函数通过指针的方式操作字符串,首先获取 `s1` 和 `s2` 的长度,然后将 `s1` 和 `s2` 中的字符复制到 `result` 中,并在结尾处添加了 `\0`。在主函数中,我们声明了需要拼接的两个字符串 `s1` 和 `s2`,并声明了一个足够大的字符数组 `result` 存储拼接后的结果。最后调用 `str_concat` 函数将两个字符串拼接到 `result` 中,并输出结果。