c语言自己编写一个函数,将字符数组s2中的全部字符连接到字符数组s1中。不用strcat函数
时间: 2024-05-16 15:13:43 浏览: 63
可以使用指针实现字符数组的连接,具体实现如下:
```c
void mystrcat(char *s1, char *s2) {
while (*s1) { // 找到s1的末尾
s1++;
}
while (*s2) { // 将s2连接到s1的末尾
*s1++ = *s2++;
}
*s1 = '\0'; // 最后加上字符串结束符
}
```
使用方法如下:
```c
#include <stdio.h>
void mystrcat(char *s1, char *s2);
int main() {
char s1[100] = "Hello, ";
char s2[100] = "world!";
mystrcat(s1, s2);
printf("%s\n", s1);
return 0;
}
void mystrcat(char *s1, char *s2) {
while (*s1) { // 找到s1的末尾
s1++;
}
while (*s2) { // 将s2连接到s1的末尾
*s1++ = *s2++;
}
*s1 = '\0'; // 最后加上字符串结束符
}
```
输出结果为:
```
Hello, world!
```
相关问题
写一个C语言程序,从键盘输入两个字符串存放在字符数组s1和s2中,数组s1和s2大小均为40。把s1和s2连接在一起构成一个字符串存放在字符数组s3中,最后输出s3。不要使用strcat和strcpy函数。用函数gets输入字符串,用函数puts输出字符串。
好的,我可以帮您解决这个问题。以下是程序代码:
```
#include <stdio.h>
void mystrcat(char s1[], char s2[], char s3[]) {
int i, j;
for (i = 0; s1[i] != '\0'; i++) {
s3[i] = s1[i];
}
for (j = 0; s2[j] != '\0'; j++) {
s3[i+j] = s2[j];
}
s3[i+j] = '\0';
}
int main() {
char s1[40], s2[40], s3[80];
printf("请输入第一个字符串s1:");
gets(s1);
printf("请输入第二个字符串s2:");
gets(s2);
mystrcat(s1, s2, s3);
printf("连接后的字符串s3为:");
puts(s3);
return 0;
}
```
通过自己实现一个mystrcat函数来实现字符串的拼接,该函数接受三个参数:两个源字符串s1和s2和一个目标字符串s3,将s1和s2中的字符依次复制到s3中,最后在s3末尾添加上字符串结束标志'\0'。
在主函数中,首先使用gets函数从键盘输入两个字符串s1和s2,然后调用自己编写的mystrcat函数将两个字符串连接起来存放在s3中,并最后使用puts函数输出字符串s3。
希望这个程序对您有所帮助!
用C语言用返回指针类型函数实现字符串连接函数strcat(),通过 ⑴输入字符串s1和s2进行测试。 ⑵将字符串“string”作为参数与s1和s2的连接后的结果调用函数strcat()实现连接。
好的,可以通过以下代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* my_strcat(char* s1, char* s2) {
int len1 = strlen(s1);
int len2 = strlen(s2);
char* result = (char*)malloc(len1+len2+1); // 分配内存
strcpy(result, s1); // 复制s1
strcpy(result+len1, s2); // 复制s2
return result;
}
int main() {
char s1[20] = "Hello";
char s2[20] = "world";
char* result = my_strcat(s1, s2);
printf("%s\n", result); // 输出"Helloworld"
free(result); // 释放内存
result = my_strcat(s1, "string");
printf("%s\n", result); // 输出"Helloworldstring"
free(result); // 释放内存
return 0;
}
```
在my_strcat函数中,我们首先获取s1和s2的长度,然后分配内存空间,将s1和s2复制到结果字符串中,最后返回指向结果字符串的指针。在主函数中,我们测试了两种情况:先将s1和s2连接,再将"string"与连接结果连接。需要注意的是,分配的内存空间需要使用free函数进行释放。
阅读全文