c - 这个有错误的 C 代码有什么问题?

标签 c pointers

这是一段代码,用于将一个指针复制到另一个指针。 错误是段错误(核心已转储)

#include<stdio.h>
char strcp(char *,char *);
int main()
{
char *p="string",*q;
printf("%s",p);
strcp(p,q);
printf("%s",q);
return 0;
}
char strcp(char *p,char *q)
{
int i;
for(i=0;*(p+i)!='\0';i++)
*(p+i)=*(q+i);
}

最佳答案

char *p="string"...
strcp(p,q);

p 指向的是一个文字,文字是只读的。禁止尝试向其中复制任何内容(并导致段错误)。

...并且q未初始化,这是seg错误的另一个可能原因。

关于c - 这个有错误的 C 代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43437333/

相关文章:

c - C中删除一个int *的内容

c++ - 为什么节点不能链接在一起?

c++ - 这个返回本地字符数组的遗留代码不是错误的吗?

c - 为什么这会返回 NULL

c - 选择结构的数据成员

c - C中指针的大小

c - Malloc() 为整数创建新的大小以用于数学 - 需要指导

c - 检查字符串是否存在于 C 链表中的函数

c - GCC 返回错误 - 'implicit declaration of function ' 截断''

c - 我需要所有 C 标准函数的引用和解释