使用char *进行分段错误(核心转储)

时间:2013-02-12 06:29:52

标签: c

我是c编程新手。我正在收到Segmentation fault(core dumped)     试图打印字符串。请帮忙。

#include <stdio.h>
#include <string.h>
int main()
{
  char *ptr;
  strcpy(ptr, "mystring");
  printf( "%s\n", ptr);
 return 0;
}

2 个答案:

答案 0 :(得分:7)

您没有为指针指定任何内存指向。

char array[MAX_LEN + 1];

char *ptr = array;

strncpy(ptr, "Cadence", MAX_LEN);
ptr[MAX_LEN] = '\0';

printf( "%s\n", ptr);

请注意,strncpy() 可以是一种更安全的复制字符串的方法,因为我们指定要复制的最大字符数,这使得字符串溢出和'scribble'变得更加困难存储器中。

更新以回应评论:我已修改上述代码以使用更安全的模式。您可能还想调查strlcpy()(非标准库)。

答案 1 :(得分:0)

声明char *ptr;时,为指向char的指针分配内存。但是如果你想在char中放一个字符串,它就会溢出。

因此,您必须为字符串分配内存:

char str [1024]; //这是你可以放入str的最大字符串长度。

此外,不要忘记终止每个字符串并且大小为一个字符的空终止符(\0