c - 使用char指针模仿c中的strcpy函数

标签 c pointers

我尝试编写一个用户定义的函数,该函数将完全执行 strcpy() 库函数的操作。但是,尽管没有错误,但我的程序崩溃了并且没有将第二个字符串复制到第一个字符串。这段代码有什么问题以及如何修复它?

#include<stdio.h>
#include<string.h>
int main(){

    char *ch1="abcd";
    char *ch2="efgh";
    str_cpy(ch1,ch2);

}

str_cpy(char *c1,char *c2){

    int i=0;


    while(c1[i]!='\0'){

          i++;
    }
    printf("%c",*(c1+3));
    int k;
    for(k=0;k<=i;k++){

          *(c1+k)=*(c2+k);
    }

}

最佳答案

字符串文字通常放入只读区域,这就是为什么当您写入c1时程序崩溃的原因。目标字符串需要是数组或分配的缓冲区:

char c1[5];
str_cpy(c1, c2);

此外,在函数中,看起来您正在将 c2 复制到 c1,但您正在计算 c1 的长度,您应该改为计算 c2 的长度:

// copy string c2 to c1
void str_cpy(char *c1, const char *c2){

    int i=0;
    while(c2[i]!='\0'){
      i++;
    }

    int k;
    for(k=0;k<=i;k++){
        *(c1+k)=*(c2+k);
    }
}

关于c - 使用char指针模仿c中的strcpy函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37086049/

相关文章:

c - 是否保证在没有填充位的情况下表示指针结构?

C++:在push_back时迭代指针 vector 时出现段错误

c - 赋值错误C

c++ - 打印此地址的值

c - 请帮助我解决 gcc 编译器中的 make 文件错误

c - 当字符串为 char * 时,strtok_s 使程序崩溃

c - nftw 传递具有未定义值的 tflag

c++ - 内存对齐和长拷贝

c - qsort const指针问题

c - 取消引用 C 中不完整类型的指针(指向结构的指针)