C语言中类似substring函数的用法

/*本文用于知识积累,若有错误之处望指出,谢谢。*/

C语言是没有substring函数的,但是可以通过类似的函数去获取字符串,也可以用自定义的方式。

函数名称:     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;

}


______________________________________________________________________________

函数名称:     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;

}


------------------------------------------------------------------------------------------------------------------------

    自己写substring函数。        // 转自 Devilhand 博客

#define N 50  
  
int substring(char *, int, int, char *);  
  
main()  
{  
int start,len,count;  
char s[N];  
char t[N];  
printf("请输入字符串:\n");  
gets(s);  
printf("请输入起始位置:");  
scanf("%d",&start);  
printf("请输入所取字符长度:");  
scanf("%d",&len);  
count=substring(s,start,len,t);  
if(count==-1)  
   printf("起始值超出范围!\n");  
else if(count==-2)  
   printf("长度超出范围!\n");  
else  
{  
   printf("得到的字符串是:");  
   puts(t);  
   getch();  
}  
return 0;  
}  
  
int substring(char * s,int start,int len,char * t)  
{  
int i=0,j=0;  
while(s[i])  
   i++;  
if(i<start)  
   return -1;  
else if(i<start+len)  
   return -2;  
else  
{  
   for(i=start-1;i<=start+len-2;i++)  
   {  
    t[j]=s[i];  
    j++;  
   }  
   t[j]='\0';  
   return 1;  
}  
} 


猜你喜欢

转载自blog.csdn.net/Yuan_xln/article/details/79604445