|
|
|
| 2008/10/07 11:43||▲
|
|
|
今回はstrncat関数です。この関数は、strcat関数の文字数制限版といった位置付けですが、strcpy関数の文字数制限版であるstrcpy関数とは動作がかなり異なります。
strncpy関数では、コピー元の文字列が文字数に満たない場合は、残りの領域をナル文字で埋めていました。また、コピー元の文字列が指定した文字数より長い場合には、末尾のナル文字は付加されませんでした。
しかし、strncat関数は、残りの領域をナル文字で埋めることもなければ、末尾にナル文字が付加されないこともありません。どちらかといえば、より直感的でわかりやすい仕様だといえます。それでは実装です。
#include <stddef.h>
char *strncat(char * __restrict__ s1, const char * __restrict__ s2, size_t n) { register char *ss, *t; for (ss = s1; *ss != '\0'; ss++) ; for (t = ss + n; ss != t && (*ss = *s2) != '\0'; ss++, s2++) ; if (ss == t) *ss = '\0'; return s1; }
strcat関数およびstrncpy関数と比べていただければ、動作の違いを把握していただけるかと思います。
|
| 2006/05/05 11:00|文字列操作|TB:0|CM:0|▲
|
|
|
コメント
|
|
コメントの投稿
|
|
|
|
|
トラックバック
|
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/50-9ccb8969
|
|
|
|
|
ホーム
全記事一覧
<< 前の記事
次の記事 >>
|