1. 程式人生 > >C語言中返回字串函式的四種實現方法

C語言中返回字串函式的四種實現方法

其實就是要返回一個有效的指標,尾部變數退出後就無效了。

使用分配的記憶體,地址是有效
char   *fun()
{
        char*   s   =   (char*)calloc(100,   sizeof(char*)   );
        if   (s)
                strcpy   (   s   ,   "abc "   );
        return   s;
}
但這種方式需要注意,必須由使用將將返回的地址free掉

將地址由入參傳入
char*   fun(char*s)
{
        if   (s)
              strcpy(s,   "abc ");
        return   s;
}
這種方式呼叫都要注意給s分配的大小是足夠。
可以這樣:
char*   fun(char*s,   int   len)
{
        if   (s)
        {
              strncpy(s,   "abc ",   len-1);
              s[len-1]   =   0;
        }
        return   s;
}

或才使用區域性靜態變數
char*   fun()
{
        static   char   s[100];
        strcpy(s,   "abc ");
        return   s;
}
這種方式需要注意,不要修改返回的這個字串,由於是共享地址,對它的修改會反應到每個呼叫者的。可以這樣:
const   char*   fun()
{
        static   char   s[100];
        strcpy(s,   "abc ");
        return   s;
}

還有一種是使用全域性變數
char   g_s[100];
char*   fun()
{
        strcpy(g_s,   "abc ");
        return   s;
}
同樣的,也要注意這個變數可儲存的最大空間。