time()函数,获取系统时间,许多依赖于time()计算超时的程序,在修改系统时间后一般都不能正常运行。
因此本人推荐:
windows下:计算绝对时间QueryPerformanceCount/QueryPerformanceFrequency.
cpu脉冲计数/ cpu频率,获得开机以滑尺来的秒数。
当然,这宴州两个函数获得时间精度是很高的(us级别),只是我们一般用不到这么精确。
linux下:
#include <sys/sysinfo.h>
调用sysinfo()获得系统启动以来经历的秒数时间。这个不属于高精度计时。
如果要进行高精度计时,高精度时间,C运行库的gettimeofday().(当然据我估计也是受到系统更改时间的影响)。
用绝对时间判断系统时间有没有被更改,用高精度时间精确计时,二者结合信祥高才是王道。
,0 error 0warning #include <stdio.h>//这里不要忘记加头带侍文蠢档吵件,如果你是蠢搜在VC6.0里面运行的话,如果是Turbo c就不用 #include <math.h>void main() { double a,b,c,disc,x1,x2,p,q//这里面都定义成...推荐用CString。比如:
DWORD dwSys1 = 0x22334455
DWORD dwSys2 = 0x34567890
CString str
str.Format("坦备%u\n%u",dwSys1,dwSys2)
MessageBox(NULL, str, NULL, MB_OK)
补充:
不用CString也行,可以使用sprintf等函数。
原型为:
int sprintf( char *buffer, const char *format [, argument] ... )
buffer用于接收结果,format以后的参数类似于printf中的相应参数。
对于上述例子,我们可以这么做:
DWORD dwSys1 = 0x22334455
DWORD dwSys2 = 0x34567890
char *str = new char[256]
sprintf(str,"%u\n%u",dwSys1,dwSys2)
MessageBox(NULL, str, NULL, MB_OK)// 针对不同的头文件,MessageBox参数可能发生变耐枯化
如果要将这些内容复制到数组中,可以使用动态的字符串数组。
比如:
char *strArray = new char*[4]
for(int i=0i<4i++)
{
// 这里做一些复制的工作
strArray[i] = new char[256]
sprintf( …… )
}
// 这里添加你要的其他代码
……
// 然后开始释放内存
for(int j=0j<4j++) delete [] strArray[j]// 释放数组分量对应的让亩毁内存
delete[] strArray// 释放指针数组的内存
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)