//:Vc++6.0 String strncpy函數(shù)
//功能:指定大小的字符串拷貝
//參數(shù):dest 目標字符串 str 要考的字符串 num 拷貝大小
//返回值:dest字符串地址
#include<stdio.h>
char *strncpy(char *dest, const char *str, int num);
int main()
{
char str1[]= "To be or not to be";
char str2[6];
strncpy (str2,str1,5);
printf("str2 = %s\n", str2);
return 0;
}
char *strncpy(char * dest, const char *str, int num)
{
//查錯
if (dest == NULL || str == NULL)
{
perror("dest or str");
return NULL;
}
//求長度
char *temp1 = dest;
const char *temp2 = str;
int len;
while (*(temp2++) != '\0');
len = temp2 - str;
//拷貝
if (num <= 0)
*temp1 = '\0';
else if (num >= len)
{
while (*str != '\0')
*(temp1++) = *(str++);
*temp1 = '\0';
}
else
{
int i;
for (i = 0; i < num; i++)
{
*(temp1++) = *(str++);
}
*temp1 = '\0';
}
return dest;
}
//在vc++6.0中的運行結果為:str2 = To be
//注:在拷貝時已經在尾部加了'\0'//:~
|