C++文字列コピー関数

2287 ワード

今日は文字列のコピー操作を用いて、2進数で1つのファイルを読み、16進数でTXTに書き、16進数で2進数に変換して元のファイルに書き戻します.ファイルをコピーする効果を達成すると同時に、マルチスレッド、読み取りながら書く操作を使用します.
期間中に1つのバッファを作って文字列の複製を使って、まずstrcpyを思いついて使って、しかし回転した元のファイルはずっと間違いを報告して開けられなくて、長い間論理をデバッグして問題がなくて、ただ間違いはstrcpyを使っただけです.
strcpy:名前の通り文字列をコピーし、関数のプロトタイプは次のとおりです.
1char * strcpy(char* destination,const char * source);

コピー文字数の規定がないことがわかりますので、この関数は文字列内の'0'に基づいてコピーする長さを決定します.その後の文字には他のものが埋め込まれている可能性がありますが、自分の望む効果には達しません.
よく使用される文字列コピー関数を次に示します.
突然文字列関数に対するシステムの理解が欠けていることに気づいて、少し時間をかけて専門的に整理して、ここで記録して、自分と必要な人が使うのを便利にします.
C/C++文字列関数のヘッダファイル:string.h
レプリケーション関数は主に4つあり、次のようになります.
1、char * strcpy(char* destination,const char * source);
2、char* strncpy(char* destination,const char* source,size_t num);
3、void * memcpy(void* destination,const void* source,size_t num);
4、void * memmove(void* destination,const void* source,size_t num);
機能と使用方法の説明:
1、strcpy:sourceポインタで示されるC文字列(末尾文字を含む)をdestinationポインタで示される領域にコピーします.この関数は、sourceとdestinationの領域が重なることを許さないと同時に、オーバーフローを避けるために、destination領域は少なくともsource領域と同じ大きさであるべきである.
2、strncpy:sourceの前num文字をdestinationにコピーします.null文字(’0’)に遭遇し、num文字に到達していない場合は、(num-n)(nはnull文字に遭遇する前に既に存在していたnull文字以外の個数)個のnull文字をdestinationに添付します.注意:destinationの最後に追加するのではなく、sourceでコピーされた文字の後ろに続いています.次に例を示します.
char des[] = “Hello,i am!”;
char source[] = “abc\0def”;
strncpy(des,source,5);
このときdes領域は、a,b,c,0,0,i,スペース,a,m,!
0,0は追加されていません!で行ないます.
ここでstrcpyはnull文字にコピーするだけで終了することに注意してください.
3、memcpy:source領域の最初のnum文字をdestinationにコピーします.この関数はnull文字をチェックしません(null文字を通常文字として処理します).num文字のコピーが終了することを意味します.この関数にはnull文字は追加されません.すなわち、num文字にnull文字がない場合、destinationの対応する文字シーケンスにnull文字もありません.strcpyとの違い:sourceのnull文字の後ろの文字もdestinationにコピーできますが、strcpyとstrncpyはできません.
4、memmove:memcpyと同じ機能を完成し、memmoveはdestinationとsourceの領域が重なることを許可する.他の3つの関数は許可されていません.
例:char str[]=「This is a test!」;
memmove(str+2,str+10,4);
このときstrは:Thtests a test!
C++では、メモリの把握が特に重要です!
次の説明は次のとおりです.http://www.cnblogs.com/cappuccino/p/4651199.html