【C语言入门】编写程序,将两个字符串连接起来,不能用 strcat 函数

题目:编写程序,将两个字符串连接起来,不能用 strcat 函数。

#include<stdio.h>
#include<string.h>
int main()
{
	char s1[100], s2[100];
	int i = 0, j = 0;
	printf("input two strings:\n");
	gets_s(s1);
	gets_s(s2);
	while (s1[i] != '\0')
	{
		i++;
	}
	for (j; s2[j] != '\0'; j++)
	{
		s1[i++] = s2[j];
	}
	s1[i] = '\0';
	printf("The new string is:%s\n", s1);
	return 0;
}

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、付费专栏及课程。

余额充值