【发布时间】:2021-09-26 07:51:55
【问题描述】:
我最近知道了一个叫strcpy的函数,strcpy的语法是char*strcpy(char * destination,const char * source),所以destination string可以是指向 char 的指针,但是我的代码的输出是 null ,为什么?
#include <stdio.h>
#include <string.h>
//Compiler version gcc 6.3.0
int main()
{
char *text1;
char text2[]="ahhabsha";
strcpy(text1,text2);
printf("%s",text1);
return 0;
}
【问题讨论】:
-
text1需要指向某些东西。目前它只是一个未初始化的垃圾值。试试char text1[128];或char *text1 = malloc(128); -
我暂时不了解malloc函数,我是初学者,为什么text1一定要指向某个东西,是不是strcpy函数后面指向的是text2[0]?
-
堆栈溢出不能替代现有的 C 引用。请从 C 书籍或教程中系统地学习。这将在任何此类参考中得到很好的介绍。
-
strcpy顾名思义就是制作一个副本。所以目的地当然需要有自己的内存缓冲区。 -
strcpy 复制到现有分配中。这就是函数的实现方式。使用 strdup 一步分配和复制。但是,在使用指针和内存进行操作之前,您应该了解 malloc 和 free。