簡體   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