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