利用标准库函数strncpy(),可以将一字符串的一部分拷贝到另一个字符串中。strncpy()函数有3个参数:第一个参数是目录字符串;第二个参 数是源字符串;第三个参数是一个整数,代表要从源字符串拷贝到目标字符串中的字符数。以下是一个用strncpy()函数拷贝字符串的一部分的例子:
#include<stdio.h>
#include<stdlib.h>
#include <string.h>
int main(int argc, char **argv)
{
char buf[20]="6.0 1257487794/n";
char da[5]={0};
char num[15]={0};
int i=0, j=0;
strncpy(da, buf, 3);
strncpy(num, buf+(strlen(buf)-11) , 10);
printf("buf= %s, da= %s, num= %s/n", buf, da, num);
return 1;
}
在上例中,第一次调用strncpy()函数时,它将源字符串的头3个字符拷贝到da中。第二次调用strncpy()函数时,它将源字符串的最后10个字符拷贝到num中,其实现过程为:
(1)用strlen()函数计算出buf字符串的长度,即strlen(buf)。
(2)将buf的长度减去11(10是将要拷贝的字符数再加中间的‘ ’字符),得出buf中剩余的字符数,即pstrlen(buf)-11。
(3)将strlen(buf)-11和buf的地址相加,得出指向buf中倒数第10个字符的地址的指针, 即buf+(strlen(buf)-11)。这个指针就是strncpy()函数的第二个参数。
(4)在strncpy()函数的第三个参数中指定要拷贝的字符是10。
打印输出如下所示:
wangwei@wangwei-desktop:~/work/data_check$ ./test
buf= 6.0 1257487794
, da= 6.0, num= 1257487794