一个字符串拷贝的百万次测试

xiaoxiao2021-03-01  11

#include "stdafx.h" #include #include #include int _tmain(int argc, _TCHAR* argv[]) { char sstr[256]="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaa"; SYSTEMTIME btime; SYSTEMTIME endtime; int i=0; int j; GetSystemTime(&btime); printf("for begintime = d:d:d.d\n",btime.wHour,btime.wMinute,b time.wSecond,btime.wMilliseconds); i=0; while ( i 字符串到目的字符串的拷贝功能,必须确保目标字符串的空间足够容纳源字符串;strcpy是以'\0'为结束标志的;strcpy是字符串 拷贝,遇0则停;效率高且调用方便。   const char *str1="abc\0def";   char str2[7];   strcpy(str2,str1)   得到结果:str2="abc";也就是说,strcpy是以'\0'为结束标志的。   strncpy 会复制一个以 '' 结束的字符串,但是如果字符串长度超过指定数量则被截断,但结果可能不包含 '' 表示结束   2.void *memcpy(void *dest, const void *src, size_t n);   memcpy 的操作对象不局限于某一类数据类型,或者说可 适用于任意数据类型,只要能给出对象的起始地址和内存长度信息、并且对象具有可操作性即可。鉴于 memcpy 函数等长拷贝的特点以及数据类型代表的物理意义,memcpy 函数通常限于同种类型数据或对象之间的拷贝,其中当然也包括字符串拷贝以及基本数据类型的拷贝。   memcpy 虽然高效,但是需要额外提供拷贝的内存长度这一参数,易错且使用不便;并且如果长度指定过大的话(最优长度是源字符串长度 + 1),还会带来性能的下降。对于基本数据类型来说,尽管可以用 memcpy 进行拷贝,由于有赋值运算符可以方便且高效地进行同种或兼容类型的数据之间的拷贝,所以这种情况下 memcpy 几乎不被使用。 memcpy(str2,str1,7); 得到结果:str2="abc\0def";   3.int sprintf(char *restrict,size_t n,const char *restrict,...)   sprintf 的格式控制串中既然可以插入各种东西,并最终把它们"连成一串",自然也就能够连接字符串,但不能直接连接没有以' '结尾的字符数组,如果直接连接,肯定会导致非法内存操作,那该怎么办呢?我们自然会想起前面介绍打印整数和浮点数时可以指定宽度,字符串也一样的。 sprintf(ch,"%sd","3sdfasdf",3); sprintf(s, "
转载请注明原文地址: https://www.6miu.com/read-4149919.html

最新回复(0)