strncpy:复制字符串的子串

来源:互联网 发布:mac 待机快捷键 编辑:程序博客网 时间:2024/06/06 06:35

利用标准库函数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

0 0