我在使用简单的复制功能时遇到了一些麻烦:
void string_copy(char *from, char *to) {
while ((*to++ = *from++) != '\0')
;
}
它需要两个指向字符串的指针作为参数,它看起来不错但是当我尝试它时我有这个错误:
Segmentation fault: 11
这是完整的代码:
#include <stdio.h>
void string_copy(char *from, char *to);
int main() {
char *from = "Hallo world!";
char *to;
string_copy(from,to);
return 0;
}
谢谢大家
最佳答案
您的问题出在副本的目的地:它是一个尚未初始化的 char*
。当您尝试将 C 字符串复制到其中时,会出现未定义的行为。
需要初始化指针
char *to = malloc(100);
或者改成一个字符数组:
char to[100];
如果您决定使用 malloc
,您需要在完成复制的字符串后调用 free(to)
。
关于C: 复制一个 char *指针到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35252719/