给定两个字符串(不包含空格),将它们连接起来。不得使用strcat函数。 输入 测试数据有多组,第一行的正整数T表示测试数据的组数。每组有两个字符串,分别占两行,每个字符串不超过100个字符。 输出 对于每组测试数据,输出连接后的字符串,单独占一行。
时间: 2024-02-21 18:01:07 浏览: 27
可以使用循环遍历字符串的方式将两个字符串连接起来,具体实现如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
int T;
scanf("%d", &T);
while (T--) {
char str1[105], str2[105];
scanf("%s%s", str1, str2);
int len1 = strlen(str1), len2 = strlen(str2);
for (int i = 0; i < len2; i++) {
str1[len1+i] = str2[i];
}
str1[len1+len2] = '\0';
printf("%s\n", str1);
}
return 0;
}
```
以上代码中,我们使用两个字符数组 `str1` 和 `str2` 存储输入的两个字符串。然后使用 `strlen()` 函数获取两个字符串的长度,利用循环遍历 `str2` 中的每一个字符,将它们逐个复制到 `str1` 的末尾。最后在 `str1` 的连接处手动添加一个 `\0` 字符,使得它成为一个以 `\0` 结尾的字符串。最后输出连接后的字符串即可。
相关问题
编程将两个字符串连接起来,不能使用strcat函数
可以使用循环遍历第一个字符串,将其每个字符依次存入一个新的字符串中,然后再遍历第二个字符串,将其每个字符也依次存入新的字符串中,最终得到两个字符串的连接结果。
具体实现可以参考以下代码:
```python
def my_strcat(str1, str2):
new_str = ''
for ch in str1:
new_str += ch
for ch in str2:
new_str += ch
return new_str
```
这个函数接受两个字符串作为参数,返回它们的连接结果。在函数内部,我们首先定义一个空字符串new_str,然后使用for循环遍历第一个字符串str1,将其每个字符依次添加到new_str中。接着再使用for循环遍历第二个字符串str2,将其每个字符也依次添加到new_str中。最后返回new_str即可。
需要注意的是,这种方法虽然简单,但是在连接大量字符串时效率较低,因为每次添加字符都会创建一个新的字符串对象,造成了大量的内存分配和拷贝操作。如果需要高效地连接大量字符串,可以使用字符串缓存或者StringBuilder等工具类。
2. 编写一个函数,将两个字符串连接起来,不能使用strcat函数。
可以使用以下函数实现字符串连接:
```c
#include <stdio.h>
void my_strcat(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[100] = "world";
my_strcat(s1, s2);
printf("%s\n", s1); // 输出 "helloworld"
return 0;
}
```
该函数的实现原理是先找到第一个字符串的末尾,然后将第二个字符串从该位置开始逐个字符复制到第一个字符串的末尾,直到第二个字符串的末尾。最后在第一个字符串的末尾添加一个空字符'\0',以表示字符串的结束。