C中如何从字符串中取出子串,有没有类似substring()的函数

时间:2022-09-11 20:44:07
C中如何从字符串中取出子串,有没有类似substring()的函数

6 个解决方案

#1


strncpy 或者 memcpy

#2


函数名称:     strncpy
函数原型:     char *strncpy(char *dest, const char *src,int count)
函数功能:     将字符串src中的count个字符拷贝到字符串dest中去
函数返回:     指向dest的指针
参数说明:     dest-目的字符串,src-源字符串,count-拷贝的字符个数
所属文件:     <string.h>

#include <stdio.h>
#include <string.h>
int main()
{
    char string[10];
    char *str1="abcdefghi";
    strncpy(string,str1,3);
    string[3]='\0';
    printf("%s",string);
    return 0;
}

#3


函数名称:     memcpy
函数原型:     void *memcpy(void *dest, const void *src, size_t n)
函数功能:     字符串拷贝
函数返回:     指向dest的指针
参数说明:     src-源字符串,n-拷贝的最大长度
所属文件:     <string.h>,<mem.h>

#include <stdio.h>
#include <string.h>
int main()
{
    char src[]="******************************";
    char dest[]="abcdefghijlkmnopqrstuvwxyz0123456709";
    char *ptr;
    printf("destination before memcpy:%s\n",dest);
    ptr=memcpy(dest,src,strlen(src));
    if (ptr)
        printf("destination after memcpy:%s\n",dest);
    else
        printf("memcpy failed");
    return 0;
}

#4


请教楼上:
这两个函数是不是都是从第一个字符开始copy N个字符呢?如果我想copy中间的一段字符串该如何操作?是不是先要用指针定位到我想copy的地方?

#5


是的。。
#include <stdio.h>
#include <string.h>
int main()
{
    char string[10];
    char *str1="abcdefghi";
    strncpy(string,str1,3);-------->strncpy(string,str1+想要开始的地方,3);
    string[3]='\0';
    printf("%s",string);
    return 0;
}

#6


晕倒

void substing(char *pSrc,char *pDes,int StartPos,int len)
{
   if(StartPos > strlen(pSrc))
    return ;
  len = (strlen(pSrc) - StartPos) > Len ? Len:(strlen(pSrc) - StartPos);
  strncpy(pDes, pSrc+StartPos, Len);
  pDes[Len] = '\0';
}

#1


strncpy 或者 memcpy

#2


函数名称:     strncpy
函数原型:     char *strncpy(char *dest, const char *src,int count)
函数功能:     将字符串src中的count个字符拷贝到字符串dest中去
函数返回:     指向dest的指针
参数说明:     dest-目的字符串,src-源字符串,count-拷贝的字符个数
所属文件:     <string.h>

#include <stdio.h>
#include <string.h>
int main()
{
    char string[10];
    char *str1="abcdefghi";
    strncpy(string,str1,3);
    string[3]='\0';
    printf("%s",string);
    return 0;
}

#3


函数名称:     memcpy
函数原型:     void *memcpy(void *dest, const void *src, size_t n)
函数功能:     字符串拷贝
函数返回:     指向dest的指针
参数说明:     src-源字符串,n-拷贝的最大长度
所属文件:     <string.h>,<mem.h>

#include <stdio.h>
#include <string.h>
int main()
{
    char src[]="******************************";
    char dest[]="abcdefghijlkmnopqrstuvwxyz0123456709";
    char *ptr;
    printf("destination before memcpy:%s\n",dest);
    ptr=memcpy(dest,src,strlen(src));
    if (ptr)
        printf("destination after memcpy:%s\n",dest);
    else
        printf("memcpy failed");
    return 0;
}

#4


请教楼上:
这两个函数是不是都是从第一个字符开始copy N个字符呢?如果我想copy中间的一段字符串该如何操作?是不是先要用指针定位到我想copy的地方?

#5


是的。。
#include <stdio.h>
#include <string.h>
int main()
{
    char string[10];
    char *str1="abcdefghi";
    strncpy(string,str1,3);-------->strncpy(string,str1+想要开始的地方,3);
    string[3]='\0';
    printf("%s",string);
    return 0;
}

#6


晕倒

void substing(char *pSrc,char *pDes,int StartPos,int len)
{
   if(StartPos > strlen(pSrc))
    return ;
  len = (strlen(pSrc) - StartPos) > Len ? Len:(strlen(pSrc) - StartPos);
  strncpy(pDes, pSrc+StartPos, Len);
  pDes[Len] = '\0';
}