|
|
|
| 2008/10/07 11:46||▲
|
|
|
あまりにものらくらやってきたので、どの関数がまだだったのか、把握し切れているかどうか不安なのですが、<string.h>ヘッダに関しては、strncpy、strncat、strncmp関数で終わりだったかと思います。過不足に気づかれた方はご指摘ください。
というわけで、今回はstrncpy関数です。strncpy関数の仕様は、何となく変なのですが、末尾のナル文字が格納されることが保障されません。また、s2文字列がより短い場合、残りの部分にナル文字が書き込まれます。それでは、実装を見てみましょう。
#include <stddef.h>
char *strncpy(char * __restrict__ s1, const char * __restrict__ s2, size_t n) { register char *ss, *t; for (ss = s1, t = ss + n; ss != t && (*ss = *s2) != '\0'; ss++, s2++) ; for (; ss != t; ss++) *ss = '\0'; return s1; }
ご覧の通り、見たままの内容ですが、他の関数同様、nをデクリメントするのではなく、終端を指すポインタtを宣言して、文字数を管理するようにしています。
|
| 2006/05/04 00:20|文字列操作|TB:0|CM:2|▲
|
|
|
コメント
|
>過不足に気づかれた方はご指摘ください。 strtokはどこ?
|
マイケル #-|2006/07/09(日) 17:16 [ 編集 ]
|
> strtokはどこ? ご指摘ありがとうございます。 おっしゃるとおり漏れていました。 適当にタイミングを見計らって、取り上げたいと思います。
|
たかぎ #ftr86F3A|2006/07/09(日) 23:29 [ 編集 ]
| |
コメントの投稿
| |
|
| |
トラックバック
|
トラックバックURLはこちら
http://libc.blog47.fc2.com/tb.php/49-97a06b02
|
| |
|
|
ホーム
全記事一覧
<< 前の記事
次の記事 >>
|
| |