简单C程序的编写15:两个字符串连接

按照下面算法编一个程序,将两个字符串连接起来,不能用strcat函数。

⑴  定义整型变量i、j,字符串s1、s2

⑵  输入字符串s1、s2

⑶  当字符串s1尚未结束,改变字符串s1的下标,使之到s1结束处

⑷  当字符串s2尚未结束,将字符串s2逐个字符连接到字符串s1的后面

⑸  为字符串s1添加结束标志

⑹  输出连接后的字符串

#include<stdio.h>
void main()
{
	int i=0,j=0;
	char s1[20],s2[20];
	printf("please input s1:\n");
	gets(s1);
	printf("please input s2:\n");
	gets(s2);
	while(s1[i])
	i++;
	while(s2[j])
	s1[i++]=s2[j++];
	printf("%s",s1);
}

 

在C语言中,如果你不能直接使用`strcat()`函数连接两个字符串,你可以通过动态内存分配和指针操作来手动实现这个功能。这里是一个简单的示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> // 为了使用strlen() // 自定义字符串连接函数 char* string_concat(char *dest, char *src) { int dest_len = strlen(dest); // 获取目标字符串长度 int src_len = strlen(src); char *new_str = (char*)malloc((dest_len + src_len + 1) * sizeof(char)); // 动态分配新空间 if (new_str == NULL) { printf("Memory allocation failed!\n"); return NULL; } // 将源字符串追加到目标字符串的末尾 for (int i = 0; i < src_len; ++i) { new_str[dest_len + i] = src[i]; } new_str[dest_len + src_len] = '\0'; // 添加终止符 // 如果目标字符串之前已经包含'\0',则不需要再添加 if (dest[dest_len - 1] != '\0') { memmove(new_str, dest, dest_len); // 移动目标字符串到新字符串的开始位置 } return new_str; } int main() { char str1[] = "Hello, "; char str2[] = "world!"; char *result = string_concat(str1, str2); if (result != NULL) { printf("Concatenated string is: %s\n", result); free(result); // 释放内存 } else { printf("Failed to concatenate strings.\n"); } return 0; } ``` 在这个例子中,我们首先计算了目标字符串和源字符串的总长度,并加上一个额外的空间用于终止符。然后创建一个新的动态数组并复制源字符串的内容。最后,如果需要,我们将目标字符串移动到新数组的开始位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值