连接两个字符串
求大佬指出问题所在{:5_100:}void fun(char p1[], char p2[])
{
int i, j;
for (i = 0;p1 != '\0';)
{
i = i + 1;
}
for (j = 0; p2 != '\0'; )
{
p1 = p2;
j = j + 1;
}
p1 = '\0';
} 在您提供的代码中,有几个问题需要修正才能正确将两个字符串连接到一起:
1. **参数问题**:您的函数参数定义为 `char p1, char p2`,这是错误的。要连接两个字符串,参数应该是字符指针,即 `char *p1, char *p2`。
2. **遍历字符串的问题**:在循环中,条件 `p1 != '\0'` 和 `p2 != '\0'` 是错误的。应该使用指针来访问字符串中的每个字符,比如 `p1 != '\0'` 和 `p2 != '\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 != '\0') {
i++;
}
// 将 p2 复制到 p1 的结尾
while (p2 != '\0') {
p1 = p2;
i++;
j++;
}
// 添加字符串结束符
p1 = '\0';
}
int main() {
char str1 = "Hello, ";// 确保 str1 有足够的空间
char str2[] = "World!";
strConcat(str1, str2);
printf("%s\n", str1);
return 0;
}
请确保第一个字符串(如 `str1`)有足够的空间以连接第二个字符串(如 `str2`)。在实际应用中,您可能需要动态分配内存以处理任意长度的字符串连接。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 void fun(char p1[], char p2[])
{
int i, j;
for (i = 0 ; p1 != '\0' ;)
{
i = i + 1;
}
for (j = 0 ; p2 != '\0';)
{
p1 = p2 ; // 【修改】
j = j + 1 ;
}
p1 = '\0' ; // 【修改】
}
兄弟,多比较一下源代码,多学学“写库程序员”的作品,会逐渐提高的。祝好运!
char *strcat ( char *dst , const char *src )
{
char *head = dst;
while ( *head ) head ++;
while ( *head ++ = *src++ ) ;
return dst;
}
damo_xu 发表于 2024-11-14 12:01
兄弟,多比较一下源代码,多学学“写库程序员”的作品,会逐渐提高的。祝好运!
char *strcat ( char...
好的,多谢!
页:
[1]