• ベストアンサー

標準ライブラリ関数の自作について質問です。

C言語初心者の学生です。 標準ライブラリ関数のstrncpyと同じ機能の関数を自作でつくる場合どのようにすれば良いでしょうか。 mystrncpy(char *s1,char *s2,int n) { } かっこの間を埋める形でお願いします。 同じようにstrncat、strnchr、strnstrも答えていただけると幸いです。 すべてではなく4つのうち1つからでも結構ですのでよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

例えば、以下のサイト内を探せば、実装例が出ています。 http://www.bohyoh.com/

その他の回答 (5)

回答No.6

ひとつだけ。 /* strncpy() C function by Mac OSX * file name: tatt.c * compile: gcc tatt.c * execution: ./a.out */ #include <stdio.h> /* 参照URLに習う */ char *mystrncpy(char *, char *, int); int main(void) { char str1[] = "ABCDEFGHI"; char str2[] = "12345"; mystrncpy(str1, str2, 3); /* (1)s2の長さがn以上のとき */ printf("str1:%s\n", str1); printf("str2:%s\n", mystrncpy(str1, "wxy_z", 4)); mystrncpy(str1, str2, 8); /* (2)s2の長さがnより少ない場合 */ printf("str1:%s\n", str1); return 0; } char *mystrncpy(char *s1, char *s2, int n) { char *temp; temp = s1; while ((*s1++ = *s2++) && --n); return temp; }

参考URL:
http://www9.plala.or.jp/sgwr-t/lib/strncpy.html
tattsumii
質問者

お礼

お返事遅れました。 みなさんありがとうございました。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.5

strnchrやstrnstrは標準関数ではありませんよ。

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.3

……失礼、書きかけの状態で解答してしまいました。 たとえば、Visual C++では引数が不正な場合は「『パラメータの検証』に説明されているように、無効なパラメータ ハンドラが呼び出され」ますが、そこまで模倣をするのでしょうか。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

で, 何が聞きたいのですか? それぞれの関数の仕様は分かりますか?

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

関数の再現度はどのレベルでしょうか。 たとえば、Visual C++では引数が不正な場合は

参考URL:
http://msdn.microsoft.com/ja-jp/library/xdsywd25(VS.80).aspx

関連するQ&A

専門家に質問してみよう