这个C(strcpy)代码有什么问题?

时间:2012-03-13 02:35:24

标签: c pointers

int main() {
   char *w;
   strcpy(w, "Hello Word");
   printf("%s\n", w);
   return 0;
}

在上面的代码中使用char指针的方式有什么问题?

4 个答案:

答案 0 :(得分:4)

您不为字符串分配空间。 w只是一个指向某个内存的指针(垃圾值,因为它没有被初始化)。

char w[32];

char *w = malloc(32);

您需要为角色分配空间。

答案 1 :(得分:3)

没有分配内存。

添加

w = (char *)malloc(42);

答案 2 :(得分:3)

这是一个未初始化的指针。 strcpy将写入内存中的某个未知位置。

答案 3 :(得分:2)

好的,你没有向系统要求内存,要将它与字符串一起使用。此代码将起作用

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main() {
   char w[11];
   strcpy(w, "Hello Word");
   printf("%s\n", w);
   return 0;
}

该代码将w声明为char数组,为其保留内存空间。另一种方法是使用malloc或calloc作为char指针。了解一下。