为什么会报错
#include<stdio.h>#include <string.h>
void my_strcat(char *src,char *dst)
{
int n=strlen(src);
int i=0;
while (*(dst+i)!='\0')
{
*(src+n+i)=*(dst+i);
// src=dst
i++;
}
*(src+n+i)=0;
}
int mian()
{
char str1="hello"; //实现字符串的追加
char str2="123456";
my_strcat(str1,str2);
printf("%s\n",str1);
}
没有找出来错误 这段代码存在一些错误,让我们来逐个解决。
1. 缺少头文件
你的代码中没有包含所需的头文件。为了使用 strlen() 和 printf() 函数,你需要引入相应的头文件。
#include <stdio.h>
#include <string.h>
2. 字符串的声明和初始化
在 C 语言中,字符串是以字符数组的形式存储的。你需要用字符数组来声明和初始化字符串,而不是使用字符指针。
char str1[] = "hello";
char str2[] = "123456";
或者,你可以使用指针方式来声明字符串并分配内存。
char* str1 = "hello";
char* str2 = "123456";
请注意,这两种方式在使用时稍有不同。
3. 输入参数修改
在函数 my_strcat() 中,你使用了 char* 来表示输入参数 src 和 dst。然而,当你调用这个函数时,你传递的是指向字符数组的指针,而不是字符指针。因此,将这两个参数改为 char 数组指针类型。
void my_strcat(char* src, char* dst)
4. 主函数拼写错误
将 `int mian()` 修改为 `int main()`。
综上所述,修正后的代码如下:
#include <stdio.h>
#include <string.h>
void my_strcat(char* src, char* dst)
{
int n = strlen(src);
int i = 0;
while (*(dst + i) != '\0')
{
*(src + n + i) = *(dst + i);
i++;
}
*(src + n + i) = '\0';
}
int main()
{
char str1[] = "hello";
char str2[] = "123456";
my_strcat(str1, str2);
printf("%s\n", str1);
return 0;
}
这段代码现在应该能够正确运行,并输出 "hello123456"。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 本帖最后由 jackz007 于 2023-12-27 23:47 编辑
唯一的错误在第 22 行:
int mian() // 【错误】:主函数是 "main()",不是 "mian()" 本帖最后由 Husj0711 于 2023-12-28 00:20 编辑
mian-->main
手敲快了是这样的。{:10_286:}
页:
[1]