繁体   English   中英

没有strcpy将字符指针复制到C中的另一个字符指针

[英]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.

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