【C语言】 提取子字符串

编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下:
int substr(char dst[], char src[],int start, int len)
{}
目标是:从 src 数组起始位置向后偏移 start个字符的位置开始,最多复制 
len 个非NUL字符到 dst数组。在复制完毕之后,dst 数组必须以NUL字节结尾。
函数的返回值是存储于 dst 数组中的字符串的长度。

代码实现:

#include <stdio.h>
#include <assert.h>

int substr(char dst[], char src[], int start, int len)
{
	assert(dst);
	assert(src);
	int ret = 0;
	while (start)
	{
		src++; 
		start--;
	}
	if (strlen(src) < len)
	{
		len = strlen(src);
	}
	ret = len;
	while (len)
	{
		*dst++ = *src++;
		len--;
	}
	*dst = ‘\0‘;

	return ret;
}
int main()
{
	char *p = "bit-tech";
	char arr[10];
	char array[10] = {0};
	int ret = substr(arr, p, 4,5);
	printf("%d\n", ret);
	printf("%s\n", arr);
	system("pause");
	return 0;
}
时间: 2024-10-04 21:23:41

【C语言】 提取子字符串的相关文章

NSString从父字符串提取子字符串

NSString除了创建, 对比等等方法, 它还可以在父字符串中提取一段字符形成一个新的子字符串. 使用的方法一共有三种: substringToIndex:如果我在这方法的后面输入一个6, 意思就是截取从第一到第六个的字符, 并形成一个新的子字符串, 类似于开区间, (0 <= a > 6) substringFromIndex:如果我在这方法的后面输入一个5, 意思就是截取从第五到最后一个的字符串, 并形成一个新的子字符串, 类似于闭区间, (5 <= a >=x) subst

在一个字符串中提取子字符串

一.提取字符串函数int substr(char dst[], char src[], int start, int len): 分析: 源字符串src[]用来提供字符串: 目的字符串dst[]用来接收子字符串: 从src[]的起始位置向后偏移,从start的位置开始最多复制len个字符,当src[]中字符数可以从start个字符开始复制len个字符,那么可以复制len个字符:当从start开始到字符串结束,即遇到'\0'时,小于len个字符,那么只需复制从start开始到字符串结束的字符串.

c语言搜索子字符串

c字符串功能练习: 获取一行字符串,然后,在这行字符串中搜索是否包含一个小字符串 #include <cstdio> #include <cstring> #define N 100 using namespace std; int read_line(char str[],int n){ int ch,i=0; while((ch=getchar())!='\n'){ if(i<n){ str[i++]=ch; } } str[i]='\0'; return i; } in

从字符串中提取子字符串

#include <assert.h> int substr(char dst[], char src[], int start, int len) {  int srcLen = strlen(src);  int left = 0;  assert(dst);  assert(src);  if (srcLen < start)  {   return -1;  }  while (start--)    {   src++;             //指针向后偏移start  }

使用javascript从一个字符串提取自字符串

问题:有一个字符串是由ijige句子组成,其中的一个句子拥有一个项目列表,该列表以一个冒号开始(:),以一个句点结束(.),我们如何去提取这个列表 解决思路:使用indexof+String方法来找到冒号,然后再次使用它找到冒号后面的第一个据点,有了这两个位置,使用String subString方法提取字符串 <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title&

[C语言】模拟实现库函数strstr,查找子字符串

//模拟实现库函数strstr,查找子字符串 #include <stdio.h> #include <assert.h> char * my_strstr( char *dst, const char * src) { assert(dst); assert(src); int i, j, k; for (i = 0; dst[i] != '\0'; i++) { for (j = i, k = 0; src[k] != '\0'&&dst[j] == src[k

寻找子字符串——上

第十一章的习题7,刚开始觉得简单,可是实际思考时发现要考虑很多东西,然后脑子就一片混沌了,然后问题一拖一个月,然而时间并没有帮我解决掉问题,问题还是要自己去努力接触才能发展的呀. 有参考答案,上网也找到了答案,昨天验证了下,是对的.自己就是眼高手低,还犟,想凭借自己的"智慧"想出来(别人的我看了觉得费劲,而且很难理解他的思想,他到底是怎么想到的呢).不过不能自负,遇到问题想不出来很正常,就该学习自己想不到的思路,改变自己的思维方式.应该向前人学习,可以先读懂,理解一点是一点,接触多了自

使用后缀数组寻找最长公共子字符串JavaScript版

后缀数组很久很久以前就出现了,具体的概念读者自行搜索,小菜仅略知一二,不便讨论. 本文通过寻找两个字符串的最长公共子字符串,演示了后缀数组的经典应用. 首先需要说明,小菜实现的这个后缀数组算法,并非标准,只是借鉴了其中的思想. 小菜实现的算法,有两个版本,第一个是空间换时间,第二个是时间换空间. 空间换时间版本 1 /* 2 利用后缀数组获取两个字符串最长公共子字符串 3 空间换时间版本 4 @params 5 s1 String,要分析的字符串 6 s2 String,要分析的字符串 7 no

NSString子字符串查找在父字符串的位置.

NSString上一章我们讲解了如何在父字符串中提取它的一部分作为一个新的子字符串而存在, 今天我们就来讲讲怎么知道子字符串在父字符串中的位置, 以及长度是多少. 这里使用的方法: NSRange: 前面我们说过, NSRange是作为一个结构体一样的存在, 它里面是由两个长整数类型构成的, 而rangOfString:就是把要判断的子字符串在这声明, 由它来返回给NSRange来判断子字符串所在父字符串的位置以及长度. 下面是简单例子: #import <Foundation/Foundati