gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:19:56 25 4
gpt4 key购买 nike

我尝试编写一个用户定义的函数,该函数将完全执行 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com