编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下:
int substr(char dst[], char src[],int start, int len)
{}
目标是:从src数组起始位置向后偏移start个字符的位置开始,最多复制len个非NULL字符到dst数组。
在复制完毕之后,dst数组必须以NULL字节结尾。函数的返回值是存储于dst数组中的字符串的长度。
首先确定要提取的子字符串的长度,用指针指向该字符地址,这时需要判断剩余字符长度是否比len长,如果少于len则需让len等于n。
这时就可以复制src字符串中的字符到dst中,最后由于要求dst末尾以NULL结尾,所以让其末尾为‘\0’。
最后返回dst中字符串的长度!
代码实现如下:
#include<stdio.h>
#include<string.h>
int substr(char dst[],char src[],int start,int len)
char* p = src + start; //定义指针变量指向需要提取的字符的地址
int n = strlen(p); //求字符串长度
int i = 0;
if(n < len)
len = n;
while(len != 0)
dst[i] = src[i+start];
len --;
} //复制字符串到dst中
dst[i] = '\0';
return 0;
int main()
char dst[15];
char src[] = "ret_is_good_boy!";
substr(dst,src,5,19);
printf("%d\n",strlen(dst)+1); //输出dst字符串的长度
printf("%s\n",dst); //输出提取出来的字符串
return 0;
}
结果如下:
接着,我们判断传入的截
取
长度是否为负数,如果是,则将其设置为源
字符串
剩余部分的长度。函数内部会根据给定的起始位置和截
取
长度,截
取
源
字符串
中
的一段
子串
,然后返回该
子串
。在主函数
中
,我们定义了
一个
字符串
"Hello, world!“,然后调用substring函数,从
字符串
的第7个字符开始,截
取
长度为5的
子串
。在
C语言
中
,我们经常需要对
字符串
进行截
取
操作,即从
一个
字符串
中
选
取
一部分作为新的
字符串
。总之,
C语言
提供了很多
字符串
处理的函数,我们只需要灵活运用这些函数,就可以轻松
实现
字符串
截
取
等各种功能。
/*处理
中
文字符*/
/*遍历
字符串
,非ASCII字符读
取
2个字节,ASCII读
取
一个
字节,获
取
字符串
长度*/
int StrLenU(const char* string)
int len = 0 ;
const char* p = string;
while(*p++ != '\0')
if(*p > 0x80 || *p < 0)
len++;
return len;
//定义
一个
结构体数组
typedef struct {
char data[6];//
字符串
12345一共5个数,为什么分配6个空间,原因是
c语言
中
字符串
后面自带
一个
/0多以多分配
一个
空间
int length;
}SqString;
//获
取
子串
的
方法一:define _CRT_SECURE_NO_WARNINGS 1include include includedefine _CRT_SECURE_NO_WARNINGSinclude include includeinclude
有些同学肯定该说了,“hello” 和 “world” 之间存在空格 “ ”,可以循环复制string1的内容,直到检测到空格便停止、退出、打印。确实哈,这是一种最为常见的
提取
方式,也是我下面要贴出的代码形式。
提取
字符串
中
的特定部分的
字符串
,这句话是什么意思呢?那么,我们怎么做,可以
取
出第
一个
单词呢?咱们废话少说,代码见真知。
编写
一个
函数,它从
一个
字符串
中
提取
一个
子
字符串
。函数原型如下:intsubstr(chardst[],charsrc[],intstart,intlen){}目标是:从src数组起始位置向后偏移start个字符的位置开始,最多复制len个非NUL字符到dst数组。在复制完毕之后,dst数组必须以NUL字节结尾。函数的返回值是存储于dst数组
中
的
字符串
的长度。代码
实现
:...
while(*p!=0x3a)p
字符串
可以是我们获
取
的或者是我们自己定义的,这里我们是截
取
:之后或者
字符串
里的数字,我们观察这段
字符串
有什么特点。
我们发现数字开头的
字符串
前是":",我们对应ASCII表找到":"对应的ASCII值。
这里附带ASCII表的链接,https://baike.s...