利用指针函数编写一个求子字符串的函数

#include<stdio.h>

#include<string.h>

#include<malloc.h>

//定义一个指针型函数substr

char *substr(char *dest,char *src,int begin,int len)

{

int srclen=strlen(src);                 //取源字符串长度

if(begin>srclen||!srclen||begin<0||len<0)

dest[0]=‘\0‘;       //当取子串的开始位置超过源串长度,或源串长度为0,或开始位置和子串的长度为从开始位置

//子串长度为非法(小于0)时,目标串置为空串

else

{

if(!len||(begin+len)>srclen)

len=srclen-begin+1;      //当字符串长度为0或开始位置加字串长度大于源长度时,调整子串为从开始位置到源

//串结束的所有字符

memmove(dest,src+begin-1,len);              //调用库函数memmove将子串从源串中移到目标串中

dest[len]=‘\0‘;

}

return dest;

}

void main()

{

char *dest;

char src[]="C Programming Languege";

if((dest=(char *)malloc(80))==NULL)

{

printf("no memory\n");

exit(1);

}

printf("%s\n",substr(dest,src,15,4));

printf("%s\n",substr(dest,src,15,0));

free(dest);

}

时间: 2024-10-11 06:39:42

利用指针函数编写一个求子字符串的函数的相关文章

第二天,导出文件sql,查询,视图view,聚合函数,反模式,字符串处理函数

//把数据库导出到脚本文件mysqldump -uroot -p1234 --databases abc > d:/a/abc.sql CREATE TABLE stud( id INT PRIMARY KEY, NAME VARCHAR(32) NOT NULL, score NUMERIC(4,1));//把所有名字都设成"Mike"了UPDATE stud SET NAME="Mike" //只设置分数>=70的记录的NameUPDATE stud

编写一个求字符串长度的函数strlen(),再用strlen()函数编写一个函数reverse(s)的倒序递归程序,使字符串s逆序-简单

源程序: #include < iostream > #include < string > using namespace std; int strlen(char *str) { int len = 0; while (str[len] != '\0') { len++; } return len; } void revers(char *b) { char c; int j, len; len = strlen(b); j = len / 2 - 1; while (j &g

编写一个可变参数的C函数——头文件stdarg.h中宏va_start ,va_arg和va_end的应用

我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的:int printf( const char* format, ...);它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法:printf("%d",i);printf("%s",s);printf("the number is %d ,string is:%s", i, s);究竟如何写可变参数的

编写一个stm32 svc关中断函数

做到了让stm32触发svc中断并传递进去参数然后切换到handler模式并修改特殊寄存器的值,从而达到关中断,但是其实这个程序直接就是特权级,故不进入handler模式也可以修改特殊寄存器...... 如下为调用写的开关中断函数: 新建了一个文件asm.c,所有我写的汇编函数都在里面: 前两个是关中断和开中断函数,主要做的事将参数传入R8并触发svc中断. Svc中断中则调用第三个set_i()函数. 当触发了中断之后,M3内核进入handler模式,利用R8中的数据,修改特殊寄存器BASEP

脚本分享-利用&quot;SED&quot;命令编写一个用于SVN账号管理的交互式脚本

描述 由于公司员工流动性强,SVN服务器总是要添加和删除账号,每次都要反复的配置,当账号密码多了有点眼花缭乱,感觉有点麻烦,为了方便,所以写了一个基于"Sed"命令的用于添加和删除SVN账号的交互式脚本分享! 前提 我们都只到配置SVN服务,有两个文件"passwd"和"authz"."passwd"用于存储账号密码信息,"authz"用于账号权限控制.我们这个脚本依赖于文件结构,需要准备两个规范化的文档.

项目实战_Python.利用Python+Flask编写一个高性能实时主动监控平台?

项目简介: 说明: 主要用于Redis实例集中化实时主动监控,后端采用Python+Flask实现,具体实现代码请阅读代码 项目思路: 项目结构: xmzoomeye-redis ├── app │   ├── conf │   │   ├── config.py │   │   ├── config.pyc │   │   ├── __init__.py │   │   ├── __init__.pyc │   │   └── rdsdata.db │   ├── __init__.py │ 

指针和数组,字符和字符串等易混淆概念举例

指针和数组相关概念 文档不知道从哪搞的,基础知识,觉得有用的可以看看,留存. 有侵权的内容,请及时告知,谢谢! 指针和数组相关概念 ************************************************* 字符与字符串的区别:单引号字符其实就是代表ASCII码的整数,而字符串代表了无名数组起始的指针 指针与数组1:任何一个数组下标运算都等同于一个对应的指针运算:对数组只能知道数组的大小,和获得指向下标为0的指针,intcalendar[12][31];sizeof(ca

C语言常用字符串操作函数总结

函数名: strcpy 功 能: 将参数src字符串拷贝至参数dest所指的地址 用 法: char *strcpy(char *dest, const char *src); 返回值: 返回参数dest的字符串起始地址 说 明: 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出的错误情况,在编写程序时需特别留意,或者用strncpy()来取代: 程序例: #include <stdio.h> #include <string.h> int main(void) { cha

C语言字符串处理函数

函数名: strcpy 功  能: 拷贝一个字符串到另一个 用  法: char *stpcpy(char *destin, char *source); 程序例: #include <stdio.h> #include <string.h> int main(void) {    char string[10];    char *str1 = "abcdefghi";    stpcpy(string, str1);    printf("%sn&