lsmCC 发表于 2023-12-27 21:44:25

为什么会报错

#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);

}

没有找出来错误

FishC 发表于 2023-12-27 21:44:39

这段代码存在一些错误,让我们来逐个解决。

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:45:34

本帖最后由 jackz007 于 2023-12-27 23:47 编辑

      唯一的错误在第 22 行:
int mian()            // 【错误】:主函数是 "main()",不是 "mian()"

Husj0711 发表于 2023-12-28 00:18:51

本帖最后由 Husj0711 于 2023-12-28 00:20 编辑

mian-->main

手敲快了是这样的。{:10_286:}
页: [1]
查看完整版本: 为什么会报错