[英]Copying Character Pointer into another Character Pointer in C Without strcpy
我在将一个指针的内容复制到另一个指针时遇到一些问题。 我无法获取* s
内容复制到* a
。 如果删除* a
的凹凸,它将仅复制s
的最后一个字符。 同样,不允许使用任何字符串库函数或任何数组符号。 抱歉,如果格式不佳,这是我的第一篇文章。 在此先感谢您的帮助。
char* copy( char *s )
{
char *a = (char *) malloc(sizeof(char)*length(s));
if (s == NULL)
{
printf("ERROR: OUT OF MEMORY\n" );
return 0;
}
while( *s != '\0' )
{
*a = *s;
s++;
a++;
}
*a = '\0';
return a;
}
切勿修改已分配的指针的值。 如果这样做,可能会丢失该地址并无法释放它。
char* copy( const char *s )
{
char *a = malloc(length(s)+1);
if (a == NULL)
{
perror( "malloc failed" );
return NULL;
}
char *c = a;
while( *s != '\0' )
{
*c = *s;
s++;
c++;
}
*c = '\0';
return a;
}
测试非常简单:
int main(int argc, char *argv[])
{
const char *s = "this is a test string";
char *a;
if (NULL != (a = copy(s))) {
printf("The copy is: %s\n", a);
free(a);
}
}
结果是:
副本是:这是一个测试字符串
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.