C和指针之字符串之strncpy、strncat、strncmp

来源:互联网 发布:数据机房图片 编辑:程序博客网 时间:2024/06/05 10:20

1、strncpy、strncat、strncmp

1)、函数原型char *strncpy(char *dest,char *src,size_t n);

复制字符串src中的内容(字符,数字、汉字....)到字符串dest中,复制多少由size_t n的值决定。如果src的前n个字符不含NULL字符,则结果不会以NULL字符结束。如果n<src的长度,只是将src的前n个字符复制到dest的前n个字符,不自动添加'\0',也就是结果dest不包括'\0',需要再手动添加一个'\0'。如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字节


2)、函数原型char *strncat(char *dest,char *src,size_t n);
把src包含n个字符追加到dest后面,需要保证dest空间足够,如果n大于src长度,只追加src长度


3)、函数原型char *strncmp(char *dest,char *src,size_t n);
比较前n个字符





2、运行Demo

#include <stdio.h>#include <string.h>char *str_ncpy(char *des, const char* src, int len){    //这里需要注意如果strlen(str)大于等于len,只有len个字符复制到了    //des,末尾没有加上'\0',如果len大于src的长度,就会加上'\0',前提    //是在des里面能存储下,所以我们一般这样写,len是des的大小,然后    //写完之后需要des[len - ] = '\0'    char *result = strncpy(des, src, len);    des[len - 1] = '\0';    return result;}char *str_ncat(char *des, const char* src, int len){    //dest要有足够的空间来容纳要拷贝的字符串    //strncat()会将dest字符串最后的'\0'覆盖掉,字符追加完成后,再追加'\0'    //如果len长度大于src,只把src长度追加到des后面    char *result = strncat(des, src, len);    return result;}void str_ncmp(char const *s1, char const *s2, int len){    int result =  strncmp(s1, s2, len);    if (result == 0)    {        printf("result == 0\n");    }    else if (result > 0)    {        printf("result > 0\n");    }    else    {        printf("result < 0\n");    }}int main(){   char name[] = "chengongyu", des[20] = "122";   str_ncpy(des, name, sizeof(des));   printf("des is %s \n", des);   const char* src = "chen";   str_ncat(des, src, sizeof(des));   printf("des is %s\n", des);   str_ncmp(name, des, 10);   return 0;}







3、结果展示

1111deMacBook-Pro:dabian a1111$ vim string_demo1.c1111deMacBook-Pro:dabian a1111$ gcc -g string_demo1.c -o demo11111deMacBook-Pro:dabian a1111$ ./demo1des is chengongyu des is chengongyuchenresult == 01111deMacBook





原创粉丝点击