1. 程式人生 > >函式中返回字串的方法

函式中返回字串的方法

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

使用分配的記憶體,地址是有效 
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; 

同樣的,也要注意這個變數可儲存的最大空間。