【C++】代码实现:截取数组中的数据(方向:从左向右截取、从右向左截取;按指定比例截取数据)

一、工作场景:

在实际工作场景中,需要从存储了数据的一个数组中截取数据:

1、截取方向允许:(1)从左向右(即:从首部向尾部);(2)从右向左(即:从尾部向首部)。

2、按指定比例截取数据:50%~100%(不得少于 50%)。

3、因为是以动态链接库(DLL)文件的方式提供给 Java 程序调用,所以增加了以下参数:输入数组的大小、输出数组的大小。

二、代码特点:

我最得意的是计算确定提取数据起始位置下标的那部分。

两句代码搞定,自诩为神来之笔。------得意一下,哈哈哈。。。。

三、实现代码:

//样本数据截取
extern "C" __declspec(dllexport) int SampleDataTruncate(double* input, long size, int direct, int ratio, double* output, long &size_output) {

	if (ratio < 50) return 1;   //截取比例不得小于 50%
	long start(0), end(0);

	//direct取值只能是1或2(1-从左开始截取  2-从右开始截取)
	switch (direct)
	{
	case 1:
		//计算从左截取起始下标
		start = 0;
		end = size*ratio / 100;
		break;

	case 2:
		//计算从右截取起始下标
		start = size* (100 - ratio) / 100;
		end = size;
		break;

	default:
		return 1;
	}

	long j(0);
	for (long i = start; i < end; i++)
	{
		output[j] = input[i];
		++j;
	}

	size_output = j;

	return 0;
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,要截取字符串中的一部分,可以使用字符串函数中的`strncpy`或者`memcpy`函数。`strncpy`函数是C标准库中的字符串函数,用来复制字符串的一部分到另一个字符数组中。下面是一个示例代码: ```c #include <stdio.h> #include <string.h> int main() { const char* image_name = "0170.bmp"; char sub_str = '\0'; // 添加字符串结束符 printf("%s\n", sub_str); return 0; } ``` 这段代码中,我们使用了`strncpy`函数来将`image_name`字符串的前4个字符复制到`sub_str`字符数组中,然后在`sub_str`字符数组的末尾添加了字符串结束符。最后通过`printf`函数输出截取的字符串部分。这样就可以截取字符串中的一部分了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [c++截取部分字符串(类似python的切片)](https://blog.csdn.net/qq_35975447/article/details/90515218)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [c++在字符串中截取指定内容](https://blog.csdn.net/m0_60558754/article/details/127125715)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值