C-使用指针将一个字符数组的内容复制到另一个字符数组

C-使用指针将一个字符数组的内容复制到另一个字符数组,c,arrays,pointers,char,C,Arrays,Pointers,Char,我试图编写一个简单的C函数,使用指针算法将一个字符数组的内容复制到另一个字符数组。我似乎无法让它工作,你能告诉我哪里出了问题吗 #include <stdio.h> #include <stdlib.h> void copystr(char *, const char *); int main() { char hello[6] = "hello"; const char world[6] = "world"; copystr(&h

我试图编写一个简单的C函数,使用指针算法将一个字符数组的内容复制到另一个字符数组。我似乎无法让它工作,你能告诉我哪里出了问题吗

#include <stdio.h>
#include <stdlib.h>

void copystr(char *, const char *);

int main()
{

    char hello[6] = "hello";
    const char world[6] = "world";

    copystr(&hello, &world);

    return 0;
}

    void copystr(char *str1, const char *str2)
    {
        *str1 = *str2;                 //copy value of *str2 into *str1
        printf("%s %s", *str1, *str2); //print "world" twice
    }
#包括
#包括
void copystr(char*,const char*);
int main()
{
char hello[6]=“hello”;
const char world[6]=“世界”;
copystr(&hello,&world);
返回0;
}
void copystr(字符*str1,常量字符*str2)
{
*str1=*str2;//将*str2的值复制到*str1中
printf(“%s%s”、*str1、*str2);//打印“world”两次
}
谢谢你的帮助

编辑: 以下是工作代码:

#include <stdio.h>
#include <stdlib.h>

void copystr(char *, const char *);

int main()
{

    char hello[6] = "hello";
    const char world[6] = "world";

    copystr(hello, world);
    printf("%s %s", hello, world);

    return 0;
}

void copystr(char *str1, const char *str2)
{
    /*copy value of *str2 into *str1 character by character*/
    while(*str2)
    {
        *str1 = *str2;
        str1++;
        str2++;
    }
}
#包括
#包括
void copystr(char*,const char*);
int main()
{
char hello[6]=“hello”;
const char world[6]=“世界”;
copystr(你好,世界);
printf(“%s%s”,你好,世界);
返回0;
}
void copystr(字符*str1,常量字符*str2)
{
/*逐个字符将*str2的值复制到*str1中*/
而(*str2)
{
*str1=*str2;
str1++;
str2++;
}
}

您只复制字符串的第一个字符

void copystring(char* str1, const char* str2)
{
    while(*str2)
    {
        *str1 = *str2;                 //copy value of *str2 into *str1
        str1++;
        str2++;
    }
}
然后在main中,在调用copystring之后

    printf("%s %s", hello, world); //print "world" twice

但请不要这样做!在现实生活中使用,如果使用普通的C字符串。

我收到5条关于参数与调用的函数不匹配的警告。你的编译器告诉你什么?嗯,一个技术说明。如果您试图更改角色数组指向的对象,您不能这样做,但可以更改内容。您可以将其声明为指向堆栈上声明的字符串的指针,这将允许您更改指针,但更改内容可能(但可能不会)导致分段错误。您可能是指
copystr(hello,world)
(no&),然后是
copystr()
函数仅使用
*str1=*str2
复制单个字符,最后,您需要
printf(“%s”,str1)
(否*)。记住,C的
char
类型是一个字符。C没有“字符串”类型。@Bo Persson编译器说:-------编译:ca04中的调试(编译器:GNU GCC编译器)--------目标是最新的。无需执行任何操作(所有项目都是最新的)。-----------运行:在ca04中调试(编译器:GNU GCC编译器)------检查是否存在:C:\Users\user\Desktop\ca04\bin\Debug\ca04.exe执行:“C:\Users\user\Desktop\codeblocks-16.01mingw-nosetup/cb_console\u runner.exe”“C:\Users\user\Desktop\ca04\bin\Debug\ca04.exe”(在C:\Users\user\Desktop\ca04\中)进程终止,状态为-1073741510(0分4秒)@LeeDanielCrocker非常感谢您的建议,非常感谢。last printf将不会打印任何内容,因为指针指向最后一个终止字符。Doh!谢谢,@yakout。非常感谢negacao,非常感谢您的帮助。这让我发疯了!:)很高兴帮助,@somers.)@negacao-如果你有时间,你能再给我解释一下while循环吗,我不完全理解。条件部分。