文字列stringを達成C

文字列文字列は、*のtypedef charとして定義された文字列を使用して、Cで実装しました。

書式#include <stdio.hに> 
する#include <stdlib.h>に含ま
する#include < 文字列の.h> 

のtypedef のchar * 文字列

文字列 get_string(文字列); 

int型(メインのボイド
{ 
    文字列名=(get_string " 何があなたの名前の\ nは?" ); 
    printf(" こんにちは、%sの\ nは!" 、名); 
    printf(" strlenを:%D \ N " 、strlenを(名前)); 

    リターン 0 ; 
} 

文字列 get_string(ストリングMSG)
{ 
    int型 LEN = 8。 文字列 STR =(文字列はmallocはsizeofCHAR)* LEN);   // 文字列のポインタのlenの長さの動的割り当て
    のchar * PTR = STR;   // のSTRにPTRポインタによって
    チャーCH;
     intは、私は= 0を; 

    のprintf(" %のS " 、MSG);
     しばらく(!(CH = getchar関数())= ' \ N- '// サイクル受信バイト、ユーザーがキャリッジリターンに入るまで
    {
         * PTR ++ = CHを;   //CH *次のアドレスとにPTR PTRポイントに割り当て 
        ++ I IF(I == LEN)   // もし全長
        {
             文字列 TMP = STR;   // TMPポイントSTR 
            LEN * = 2 ;   // 長二重 
            STR = (文字列はmallocはsizeofCHAR)* LEN);   // STRリダイレクトA倍ダイナミックアロケーション長ストリングポインタ 
            strcpyの(STR、TMP);   // TMP文字がにコピーされるSTR     
            PTR = STR +私;   // ptrが今、i番目の文字のアドレスの新しいSTRを指す
            フリーとして(TMP);   //は、メモリ空間を解放します
            = tmpにNULL; 
        } 
    }
     * PTR = ' \ 0 ' ;   // 文字列ポインタは、最後の文字'\ 0'でなければなりません

    戻りSTR; 
}

おすすめ

転載: www.cnblogs.com/noonjuan/p/12054464.html