在您提供的代码中,有几个问题需要修正才能正确将两个字符串连接到一起:
1. **参数问题**:您的函数参数定义为 `char p1, char p2`,这是错误的。要连接两个字符串,参数应该是字符指针,即 `char *p1, char *p2`。
2. **遍历字符串的问题**:在循环中,条件 `p1 != '\0'` 和 `p2 != '\0'` 是错误的。应该使用指针来访问字符串中的每个字符,比如 `p1[i] != '\0'` 和 `p2[j] != '\0'`。
3. **字符串拼接的问题**:在您当前的逻辑中,`p1 = p2;` 只是简单地将指针 `p1` 指向了 `p2`,而不是实际拼接字符串。
4. **要拼接字符串**,需要确保 `p1` 指向的内存足够大,以容纳 `p1` 和 `p2` 加上一个终止符 `\0`。
修正后的连接字符串的函数可能如下所示:
#include <stdio.h>
void strConcat(char *p1, const char *p2)
{
int i = 0, j = 0;
// 找到 p1 的结尾
while (p1[i] != '\0') {
i++;
}
// 将 p2 复制到 p1 的结尾
while (p2[j] != '\0') {
p1[i] = p2[j];
i++;
j++;
}
// 添加字符串结束符
p1[i] = '\0';
}
int main() {
char str1[100] = "Hello, "; // 确保 str1 有足够的空间
char str2[] = "World!";
strConcat(str1, str2);
printf("%s\n", str1);
return 0;
}
请确保第一个字符串(如 `str1`)有足够的空间以连接第二个字符串(如 `str2`)。在实际应用中,您可能需要动态分配内存以处理任意长度的字符串连接。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |