我是c编程新手。我正在收到Segmentation fault(core dumped) 试图打印字符串。请帮忙。
#include <stdio.h>
#include <string.h>
int main()
{
char *ptr;
strcpy(ptr, "mystring");
printf( "%s\n", ptr);
return 0;
}
答案 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
)