C语言–字符串的截取

C语言–字符串的截取今天碰到了一个字符串截取的功能实现问题 比较常见所以就做下记录 一般的实现是这样的 include stdio h include string h intmain void chardest 5 0 charsrc abcdefghijk strncpy dest src 4 注意一下 string h stdio h

        今天碰到了一个字符串截取的功能实现问题,比较常见所以就做下记录。

一般的实现是这样的:

#include 
  
    #include 
   
     int main(void){ char dest[5]={0}; char src[]="abcdefghijk"; strncpy(dest,src,4);//注意一下这里假如改为5的话,可能会出现 //内存越界使得dest可能会占用其它模块的内存,从而导致错误发生; //strncpy(dest,src+5,4);//从第5个字符开始截取; printf("dest: %s\n",dest); return 0; } 
    
  

引申一下从左边开始截取n个字符:

static char* left(char *dest,const char *src ,int n){ char *p=dest; char *q=src; int len=strlen(src); if(n>len){ n=len; } while(n--) *(p++)=*(q++); *(p++)='\0'; return dest; } 

从右边开始截取n个字符:

static char* light(char *dest,const char *src ,int n){ char *p=dest; char *q=src; int len=strlen(src); if(n>len){ n=len; } //int start=len-n; //q=q+start; q+=len-n; while(n--) *(p++)=*(q++); *(p++)='\0'; return dest; } 

从中间某处截取一定长度的的子字符串:

static char* cut_substr(char *dest,const char *src ,char start,int n){ char *p=dest; char *q=src; chsr *temp=NULL; int len=strlen(src); if(start>=len || start<0){ return NULL; } temp=q+start; if(n>strlen(temp)){//注意这里,截取长度如果超过了src剩余的长度则只截取到src的最后,以避免内存越界; n=strlen(temp); } q+=start; while(n--) *(p++)=*(q++); *(p++)='\0'; return dest; } 

以上方法基本上用指针来实现,但平时可以使用库函数来实现字符串的操作;

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/204823.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午7:27
下一篇 2026年3月19日 下午7:27


相关推荐

  • Servlet的工作原理简介

    Servlet的工作原理简介你使用的本地web服务器或者买的别的服务器都一样的原理,鼠标点击事件发出一个HTTP请求以后,服务器会将请求移交给servlet容器,servlet容器首先对所请求的URL进行解析并根据web.xml配置文件找到相应的处理servlet,同时将request、response对象传递给它,servlet通过request对象可知客户端的请求者、请求信息以及其他的信息等,servlet在处理完请求后…

    2026年4月17日
    6
  • p标签自动换行「建议收藏」

    p标签自动换行「建议收藏」当p标签中有文字,标点,数字,字母并且长度超过一行换行时容易占不满整行。如:p的宽度为图中红色框,但是p标签的内容没有充满就换行了。为解决此问题,可以给p标签加自动换行。代码如下:p{ word-wrap:break-word; word-break:break-all;}…

    2025年7月12日
    4
  • FastJSON解析JSON字符串数据

    FastJSON解析JSON字符串数据需要解析的 JSON 数据如下 解析代码 publicstatic String args Stringresult msg success code 0 data invoice code total amount 22090 39 total amount excluding tax 20266 41 total tax amount

    2026年3月19日
    2
  • struts2标签具体解释

    struts2标签具体解释

    2021年12月15日
    45
  • pytorch实现resnet_如何搭建平台

    pytorch实现resnet_如何搭建平台ResNet34网络结构先上图参照ResNet18的搭建,由于34层和18层几乎相同,叠加卷积单元数即可,所以没有写注释,具体可以参考我的ResNet18搭建中的注释,ResNet34的训练部分也可以参照。importtorchimporttorch.nnasnnfromtorch.nnimportfunctionalasFclassCommonBlock(nn.Module):def__init__(self,in_channel,out_chann

    2022年10月5日
    5
  • ipsec linux_linux文件复制命令

    ipsec linux_linux文件复制命令ipset介绍iptables是在linux内核里配置防火墙规则的用户空间工具,它实际上是netfilter框架的一部分.可能因为iptables是netfilter框架里最常见的部分,所以这个框架通常被称为iptables,iptables是linux从2.4版本引入的防火墙解决方案.ipset是iptables的扩展,它允许你创建匹配整个地址sets(地址集合)的规则。而不像普通的ipta…

    2022年10月7日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号