strncpy(s1, s2, n)函数把s2中的n个字符拷贝至s1中,截断s2,或者有必要的话在末尾添加空字符。如果s2的长度是n或多于n,目标字符串不能空字符结尾。该函数返回s1.自己编写一个这样的函数,名为mystrncpy()。在一个完整的程序中测试该函数,使用一个循环给函数提供输入值。
以下为代码:
#include <stdio.h>
#define SIZE 10
char * mystrncpy(char *, const char *, int);
int main(void)
{
char a[SIZE + 1] = {'h', 'e', 'l', 'l', 'o', '\0', [8] = '!'}; //检查是否末尾有'\0'
char b[SIZE] = "guy";
mystrncpy(a, b, 3); //通过调整第3个参数来观察是否添加'\0'
puts(a);
return 0;
}
char * mystrncpy(char * s1, const char * s2, int n)
{
char * ptr = s1;
char * pst = s2;
while(*ptr) //找到'\0'
ptr++;
while(pst < s2 + n && *pst)
{
*ptr++ = *pst++;
}
if(pst < s2 + n) //如果s2长度小于n,给s1末尾填上'\0'
*ptr = *pst;
return s1;
}