strncpy函数复制字符的速度的比较

通过实验对比strncpy函数每次复制不同数量字符的速度,发现复制字符数量增加时,整体速度也相应提升,验证了复制效率与复制单位量之间的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

##刚刚和老师交流,这是道简单又不简单的面试题,问:如何把这个字符复制提高8倍?

实验目的:对于同一段字符,比较strncpy函数每次复制1个/4个字符的速度大小

方法:读取一个文件中的字符到str[N]数组中,

           Mycpy函数表示 把从b开始的字符读取n个到以a开始的字符中,直到把a读完

           testFunc函数计算读取b到a共MAXK次,每次m个字符所耗费的时间。(当读取时间过小时,PC无法将其打印,故循环MAXK次,再进行计算)

代码:

#include <stdio.h>
#include <string.h>
#include <time.h>

#define N 1000
#define MAXK 10000
clock_t start,stop;
double duration;
void Mycpy(char *a,char *b,int n);
void testFunc(char *a,char *b,int m);
int main()
{
	char str[N];//={"1111111111111"};
	char cstr[N]={};
	FILE *fp = fopen("1.txt", "r");
	fgets(str, N, fp);
	testFunc(cstr,str,1);
	testFunc(cstr,str,2);
	testFunc(cstr,str,4);
	testFunc(cstr,str,8);
	
	return 0;
 } 

void testFunc(char *a,char *b,int m)
{
	start=clock();
	for(int i=0;i<MAXK;i++)
		Mycpy(a,b,m);
	stop=clock();
	duration = ((double)(stop - start)) / CLK_TCK/MAXK;
	printf("ticks%d = %f\n", m, (double)(stop - start)/MAXK);
	printf("duration = %6.2e\n\n", duration);
}

void Mycpy(char *a,char *b,int n)
{
	int i=0;
	while(i<N)
	{
		strncpy(&a[i],&b[i],n);
		i=i+n;
	}
}

实验结果:

实验结果表示,读取文件时,当每次复制字符的个数提高n倍时,其读取整个文件的速度也会差不多提高对应的倍数!!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值