如何解决将目标字符串作为 strcpy 中的指针传递
最近知道了一个叫 strcpy 的函数,strcpy 的语法是 char*strcpy(char * destination,const char * source) ,所以目标字符串可以是指向 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;
}
解决方法
所以目标字符串可以是指向字符的指针
不,目标字符串可以不能是指针。
目标必须是一个连续的 char 类型的内存区域。第一个函数参数是一个指向该区域的指针。
您的代码正确传递了一个字符指针,但问题是该指针不指向任何内存。
通常有两种方法可以做到这一点。
-
像这样分配动态内存:
char text2[]="ahhabsha"; char* text1 = malloc(sizeof text2); // or malloc(1 + strlen(text2)); ... ... free(text1);
-
将
text1
改为 char 数组 而不是 char 指针char text2[]="ahhabsha"; char text1[sizeof text2];
在第二种情况下,当您调用 text1
时,strcpy
会自动从“字符数组”转换为“字符指针”
顺便说一句:
在许多系统上还有非标准的 strdup
函数。它执行内存分配和字符串复制,因此您无需调用 strcpy
。喜欢:
char text2[]="ahhabsha";
char* text1 = strdup(text2);
printf("%s\n",text1);
free(text1);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。