将两个字符串连接起来,不用strcat函数
时间: 2023-06-07 09:09:22 浏览: 114
你好,关于你的问题,可以使用以下代码将两个字符串连接起来:
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str1[20] = "Hello";
char str2[20] = " World!";
int i = 0, j = 0;
while (str1[i] != '\0') {
i++;
}
while (str2[j] != '\0') {
str1[i] = str2[j];
i++;
j++;
}
str1[i] = '\0'; // 添加字符串结束符
cout << str1 << endl;
return 0;
}
```
上述代码中,首先将指针 `i` 和 `j` 初始化为 0,然后使用 `while` 循环找到字符串 `str1` 的末尾位置。接着使用另一个 `while` 循环,逐个将 `str2` 中的字符添加到 `str1` 的末尾,直到 `str2` 的末尾位置。最后,在 `str1` 的末尾添加字符串结束符 `\0`,以表示字符串的结束。最终,使用 `cout` 输出拼接后的字符串 `str1`。
希望能解答您的问题。
相关问题
编一程序将两个字符串连接起来不用strcat函数c语言
在C语言中,如果你想将两个字符串连接起来但不使用`strcat()`函数,可以使用循环和字符数组的方式来实现。这里是一个简单的例子:
```c
#include <stdio.h>
#include <string.h> // 需要这个头文件来获取strlen()函数
void concatenateStrings(char* str1, char* str2) {
int len1 = strlen(str1); // 获取第一个字符串长度
int len2 = strlen(str2); // 获取第二个字符串长度
// 确保有足够的空间来存放结果
char result[len1 + len2 + 1]; // 加1是因为需要空字符'\0'作为结束标志
// 将str1复制到result
for (int i = 0; i < len1; i++) {
result[i] = str1[i];
}
// 将str2附加到str1之后
result[len1] = '\0'; // 结束标志
int j = len1;
for (j = 0; j < len2; j++) {
result[j + len1] = str2[j];
}
result[j + len1] = '\0'; // 结束标志
}
int main() {
char str1[] = "Hello";
char str2[] = " World!";
concatenateStrings(str1, str2);
printf("Concatenated string: %s\n", result); // 输出结果
return 0;
}
```
在这个示例中,我们首先计算出两个字符串的长度,然后创建一个新的字符数组`result`来存放连接后的字符串。接着,我们将第一个字符串`str1`复制到`result`,再把第二个字符串的字符逐个添加到`result`的相应位置。最后,别忘了添加空字符`\0`作为字符串结束标记。
用C语言程序写一个函数,将两个字符串连接,不用strcat函数
下面是一个示例函数,用于将两个字符串连接起来:
```c
#include <stdio.h>
void mystrcat(char *dest, const char *src) {
// 找到dest字符串的末尾
while (*dest != '\0') {
dest++;
}
// 将src字符串复制到dest字符串末尾
while (*src != '\0') {
*dest = *src;
dest++;
src++;
}
// 在最后添加字符串结束符
*dest = '\0';
}
int main() {
char dest[100] = "Hello, ";
char src[] = "world!";
mystrcat(dest, src);
printf("%s\n", dest); // 输出 "Hello, world!"
return 0;
}
```
该函数基本思路是先找到dest字符串的末尾,然后将src字符串复制到dest字符串的末尾,最后添加字符串结束符'\0'。需要注意的是,为了保证安全,我们将src参数声明为const char*,避免在函数内部修改其内容。
阅读全文