dポイントプレゼントキャンペーン実施中!

C言語初心者の学生です。
標準ライブラリ関数のstrncpyと同じ機能の関数を自作でつくる場合どのようにすれば良いでしょうか。

mystrncpy(char *s1,char *s2,int n)
{

}

かっこの間を埋める形でお願いします。
同じようにstrncat、strnchr、strnstrも答えていただけると幸いです。
すべてではなく4つのうち1つからでも結構ですのでよろしくお願いいたします。

A 回答 (6件)

例えば、以下のサイト内を探せば、実装例が出ています。


http://www.bohyoh.com/
    • good
    • 0

ひとつだけ。




/* 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
    • good
    • 0
この回答へのお礼

お返事遅れました。

みなさんありがとうございました。

お礼日時:2010/01/20 22:32

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

    • good
    • 0

……失礼、書きかけの状態で解答してしまいました。



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

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

    • good
    • 0

関数の再現度はどのレベルでしょうか。


たとえば、Visual C++では引数が不正な場合は

参考URL:http://msdn.microsoft.com/ja-jp/library/xdsywd25 …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!