截取字符串 --C语言实现

本文介绍了一个使用C语言实现的字符串截取功能,包括从字符串的左侧、右侧及中间位置进行截取的方法,并提供了完整的代码示例。此外,还展示了如何通过strstr函数查找子串在主串中的首次出现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include "stdio.h"
#include "conio.h"
/*从左边开始截取字符串 */
char *left(char *dst,char *src,int n,int m)
{
char *p=src;
char *q=dst;
int len=strlen(src);
if(n>len) n=len;
while(n--) *(q++)=*(p++);
*(q++)='\0';
return dst;
}
/* 从右边开始截取*/
char *right(char *dst,char *src,int n,int m)
{
char *p=src;
char *q=dst;
int len=strlen(src);
if(n>len) n=len;
p+=(len-n);
while(*(q++)=*(p++));
return dst;
}
/*从中部截取字符串 */
char *mid(char *dst,char *src,int n,int m)
{
char *p=src;
char *q=dst;
int len=strlen(src);
if(n>len) n=len-m;
if(m>0) return NULL;
  p += m;
    while(n--) *(q++) = *(p++);
    *(q++)='\0';
    return dst;
}
char *substring(char *dst,char *src,int len,int start)
{
  char *p=dst;
  char *q=src;
  int length=strlen(src);
  if(start>=length||start<0) return NULL;
  if(len>length) len=length-start;
  q+=start;
  while(len--)
  {
    *(p++)=*(q++);
  }
  *(p++)='\0';
  return dst;
}
main()
{
    char *src="411524198510088017";
    char *year,*month,*day;
    int i;
    /* 截取年
    left(year,src,4,0);
    for(i=0;i<strlen(year);i++)
    {
    printf("%c",*(year+i));
    }
    printf("Hello, world\n");
    */
    substring(year,src,4,6);
    for(i=0;i<strlen(year);i++)
    {
    printf("%c",*(year+i));
    }
    getch();
}

原型:extern char *strstr(char *haystack, char *needle); 


用法:#include <string.h> 


功能:从字符串haystack中寻找needle第一次出现的位置(不比较结束符NULL)。 


说明:返回指向第一次出现needle位置的指针,如果没找到则返回NULL。 


举例: 

// strstr.c 

#include <syslib.h> 
#include <string.h> 

main() 
{ 
char *s="Golden Global View"; 
char *l="lob"; 
char *p; 

clrscr(); 

p=strstr(s,l); 
if(p) 
printf("%s",p); 
else 
printf("Not Found!"); 

getchar(); 
return 0; 
} 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值