C関数ライブラリでのstrncpy実装

1653 ワード

/*
*copyright@nciaebupt        
*  :extern char *strncpy(char *dest, char *src, int n);
*  :#include <string.h>
*  : src   NULL        n      dest      。
*  :
*     src  n     NULL  ,      NULL    。
*     src     n   ,  NULL  dest     n   。
*   src dest            dest           src    。
*       dest   。
*  C     strncpy
*/
#include <cstdio>
#include <cstring>

int main(int args,char **argv)
{
    char str1[] = "To be or not to be";
    char str2[40];
    char str3[40];

    strncpy(str2,str1,sizeof(str1));
    strncpy(str3,str1,5);
    str3[5] = '\0';

    printf("str2 : %s
str3 : %s
",str2,str3); getchar(); return 0; } /* *copyright@nciaebupt * :extern char *strncpy(char *dest, char *src, int n); * :#include <string.h> * : src NULL n dest 。 * : * src n NULL , NULL 。 * src n , NULL dest n 。 * src dest dest src 。 * dest 。 * strncpy */ #include <cstdio> char * _strncpy(char * dest,const char * src,size_t count) { char * ret = dest; while(count && (*dest++ = *src++)) count--; if(count) { while(--count) { *(dest++) = '\0'; } } return ret; } int main(int args,char ** argv) { char str1[] = "To be or not to be"; char str2[40]; char str3[40]; _strncpy(str2,str1,sizeof(str1)); _strncpy(str3,str1,5); str3[5] = '\0'; printf("str2 : %s
str3 : %s",str2,str3); getchar(); return 0; }