C99に対応した標準Cライブラリの実装レポートを行っていきます。

プロフィール 

Author:高木信尚

ホームページ
ブログ

最近の記事 

最近のコメント 

最近のトラックバック 

月別アーカイブ 

カテゴリー 

ブロとも申請フォーム 

この人とブロともになる

ホーム 全記事一覧 << 前の記事 次の記事 >>

 

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:0CM:0

コメント
コメントの投稿

管理者にだけ表示を許可する


トラックバック
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/50-9ccb8969

ホーム 全記事一覧 << 前の記事 次の記事 >>

ブログ内検索 

お勧め書籍 

RSSフィード 

リンク 

このブログをリンクに追加する

Powered By FC2ブログ 

Powered By FC2ブログ
ブログやるならFC2ブログ

Copyright(C) 2006 TAKAGI Nobuhisa All rights reserved.
Powered by FC2ブログ. 無料ホームページ アフィリエイト レンタルサーバー FC2ブログ 一戸建て template designed by 遥かなるわらしべ長者への挑戦.