繁体   English   中英

C-strcpy指针

[英]C - strcpy pointer

我想问一下strcpy。 我在这里有问题。 这是我的代码:

char *string1 = "Sentence 1";
char *string2 = "A";

strcpy(string1, string2);

我认为我的代码没有问题。 string1和string2中第一个字符的地址发送到函数strcpy 这段代码应该没有问题,对吧? 任何人都可以帮助我解决这个问题或向我解释。

谢谢。

有一个问题-每个指针都指向您无法写入的内存; 它们指向编译器构建到您的应用程序中的常量。

您需要在可写内存中分配空间(例如,通过char string1[<size>];进行堆栈char string1[<size>];或者通过char *string1 = malloc(<size>);进行堆)。 确保替换为所需的缓冲区空间,并至少为NULL终止添加一个额外的字节。 如果您使用malloc() ,请确保稍后再使用free()

这给出了不确定的行为。 由于历史原因(字符串文字不是const ),编译器可能允许这样做,但是您基本上是在试图覆盖您在许多平台上根本无法修改的数据。

从linux手册页:

char * strcpy(char * dest,const char * src); strcpy()函数将src指向的字符串(包括终止的空字节('\\ 0'))复制到dest指向的缓冲区。 字符串不能重叠,并且目标字符串dest必须足够大才能接收副本。

* dest指针存在问题,因为它指向的是字符串文字而不是分配的可修改内存。 尝试将字符串1定义为char string1[BUFFER_LENGTH]; 或使用malloc()动态分配它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM