- ベストアンサー
標準ライブラリ関数の自作について質問です。
C言語初心者の学生です。 標準ライブラリ関数のstrncpyと同じ機能の関数を自作でつくる場合どのようにすれば良いでしょうか。 mystrncpy(char *s1,char *s2,int n) { } かっこの間を埋める形でお願いします。 同じようにstrncat、strnchr、strnstrも答えていただけると幸いです。 すべてではなく4つのうち1つからでも結構ですのでよろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
例えば、以下のサイト内を探せば、実装例が出ています。 http://www.bohyoh.com/
その他の回答 (5)
- 和泉 博(@hiroshi09s)
- ベストアンサー率54% (59/109)
ひとつだけ。 /* 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; }
- jacta
- ベストアンサー率26% (845/3158)
strnchrやstrnstrは標準関数ではありませんよ。
- hitomura
- ベストアンサー率48% (325/664)
……失礼、書きかけの状態で解答してしまいました。 たとえば、Visual C++では引数が不正な場合は「『パラメータの検証』に説明されているように、無効なパラメータ ハンドラが呼び出され」ますが、そこまで模倣をするのでしょうか。
- Tacosan
- ベストアンサー率23% (3656/15482)
で, 何が聞きたいのですか? それぞれの関数の仕様は分かりますか?
- hitomura
- ベストアンサー率48% (325/664)
関数の再現度はどのレベルでしょうか。 たとえば、Visual C++では引数が不正な場合は
お礼
お返事遅れました。 みなさんありがとうございました。