cclock头文件|C语言中timeh头文件中对时间的操作具体是怎样的

A. 怎样用c语言设计计算程序执行的时间

C语言中的头文件time.h中定义了库函数clock(),它返回的是从程序运行开始算起的时间,一时钟周期为单位,time.h还定义了符号:CLOCKS_PER_SEC,即一秒钟的时钟周期。这样就简单了,在头文件中加入#include<time.h>,在程序main()主函数的开头定义long now=0;并给把clock()赋值给now,即now=clock();记录程序开始时的时间,clock()会继续增加,但now已经确定为开始那一时刻clock()的值,在程序结尾,算式clock()-now就是程序执行所需的时间,但是是以时钟周期为单位的,如果想得到以秒为单位的时间只要输出(clock()-now)/CLOCKS_PER_SEC就是了,即在程序结尾添加printf("%lf",(clock()-now)/CLOCKS_PER_SEC);就可以了。

B. c语言,时间差怎么编程

#include <stdio.h>

#include <stdlib.h>

#include <time.h>void main()

{

unsigned char time1[] = {10, 8, 31, 9, 26 };

unsigned char time2[] = { 10, 8, 31, 9, 50 };struct tm t1 = {0};

struct tm t2 = {0};time_t _t1;

time_t _t2;double diff;t1.tm_year = time1[0] + 100;

t1.tm_mon = time1[1];

t1.tm_mday = time1[2];

t1.tm_hour = time1[3];

t1.tm_min = time1[4];t2.tm_year = time2[0] + 100;

t2.tm_mon = time2[1];

t2.tm_mday = time2[2];

t2.tm_hour = time2[3];

t2.tm_min = time2[4];_t1 = _mkgmtime( &t1 );

_t2 = _mkgmtime( &t2 );diff = difftime(_t2, _t1 );printf( "相差 %.0f 分钟", diff / 60 );}

(2)cclock头文件扩展阅读:

C语言中有两个相关的函数用来计算时间差,分别是:

time_t time( time_t *t) 与 clock_t clock(void)

头文件: time.h

计算的时间单位分别为: s , ms

time_t 和 clock_t 是函数库time.h 中定义的用来保存时间的数据结构

返回值:

1、time : 返回从公元1970年1月1号的UTC时间从0时0分0秒算起到现在所经过的秒滚激数。如果参数 t 非空指针的话,返回的时间会保存在 t 所指向的内存。

2、clock:返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数。 1单元 = 1 ms。

所以我们可以根据具体情况需求,判断采用哪一个函数。

具体用法如下例子:

#include <time.h>

#include <stdio.h>

#include <stdlib.h>

int main()

{

time_t c_start, t_start, c_end, t_end;

c_start = clock(); //!< 单位为ms

t_start = time(NULL); //!< 单位为s

system("pause");

c_end = clock();

t_end= time(NULL);

//!<difftime(time_t, time_t)返回两个time_t变量间的时大纤袜间间隔,即时间差

printf("The pause used %f ms by clock()",difftime(c_end,c_start));

printf("The pause used %f s by time()",difftime(t_end,t_start));

system("pause");

return 0;

}

因此,要计算某一函数块的占用时间时,只需要在竖侍执行该函数块之前和执行完该函数块之后调用同一个时间计算函数。再调用函数difftime()计算两者的差,即可得到耗费时间。

C. c语言时间处理函数

C语言的标准库函数包括一系列日期和时间处理函数,它们都在头文件中说明。在头文件中定义了三种类型:time_t,struct tm和clock_t。下面列出了这些函数。time_t time(time_t *timer);double difftime(time_t time1,time_t time2);struct tm *gmtime(const time_t *timer);struct tm *localtime(const time_t *timer);char *asctime(const struct tm *timeptr);char *ctime(const time_t *timer);size_t strftime(char *s,size_t maxsize,const char *format,const struct tm *timeptr);time_t mktime(struct tm *timeptr);clock_t clock(void);【具体应用举例】asctime(将时间和日期以字符串格式表示)相关函数time,ctime,gmtime,localtime表头文件#i nclude定义函数char * asctime(const struct tm * timeptr);函数说明asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为:"Wed Jun 30 21:49:08 1993\n"返回值若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。附加说明返回一字符串表示目前当地的时间日期。范例#i ncludemain(){time_t timep;time (&timep);printf("%s",asctime(gmtime(&timep)));}执行Sat Oct 28 02:10:06 2000ctime(将时间和日期以字符串格式表示)相关函数time,asctime,gmtime,localtime表头文件#i nclude定义函数char *ctime(const time_t *timep);函数信高说明ctime ()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为"Wed Jun 30 21 :49 :08 1993\n"。若再调用相关的时间日期函数,此字符串可能会被破坏。返回值返回一字符串表示目前当地的时间日期。范例#i ncludemain(){time_t timep;time (&timep);printf("%s",ctime(&timep));}执行Sat Oct 28 10 : 12 : 05 2000gettimeofday(取得目前的时间)相关函数time,ctime,ftime,settimeofday表头文件#i nclude#i nclude定义函数int gettimeofday ( struct timeval * tv , struct timezone * tz )函数说明gettimeofday()会把目前的时间有tv所指的结构返回,当地时区的信息则放到tz所指的结构中。timeval结构定义为:struct timeval{long tv_sec; /*秒*/long tv_usec; /*微秒*/};timezone 结构定义为:struct timezone{int tz_minuteswest; /*和Greenwich 时间差了多少分钟*/int tz_dsttime; /*日光节约时间的状态*/};上述两个结构都定义在/usr/include/闭坦携sys/time.h。tz_dsttime 所代表的状态如下DST_NONE /*不使用*/DST_USA /*美国*/DST_AUST /*澳洲*/DST_WET /*西欧*/DST_MET /*中欧*/DST_EET /*东欧*/DST_CAN /*加拿大*/DST_GB /*大不列颠*/DST_RUM /*罗马尼亚*/DST_TUR /轿伏*土耳其*/DST_AUSTALT /*澳洲(1986年以后)*/返回值成功则返回0,失败返回-1,错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存取权限。范例#i nclude#i ncludemain(){struct timeval tv;struct timezone tz;gettimeofday (&tv , &tz);printf("tv_sec; %d\n", tv,.tv_sec) ;printf("tv_usec; %d\n",tv.tv_usec);printf("tz_minuteswest; %d\n", tz.tz_minuteswest);printf("tz_dsttime, %d\n",tz.tz_dsttime);}执行tv_sec: 974857339tv_usec:136996tz_minuteswest:-540tz_dsttime:0gmtime(取得目前时间和日期)相关函数time,asctime,ctime,localtime表头文件#i nclude定义函数struct tm*gmtime(const time_t*timep);函数说明gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。结构tm的定义为struct tm{int tm_sec;int tm_min;int tm_hour;int tm_mday;int tm_mon;int tm_year;int tm_wday;int tm_yday;int tm_isdst;};int tm_sec 代表目前秒数,正常范围为0-59,但允许至61秒int tm_min 代表目前分数,范围0-59int tm_hour 从午夜算起的时数,范围为0-23int tm_mday 目前月份的日数,范围01-31int tm_mon 代表目前月份,从一月算起,范围从0-11int tm_year 从1900 年算起至今的年数int tm_wday 一星期的日数,从星期一算起,范围为0-6int tm_yday 从今年1月1日算起至今的天数,范围为0-365int tm_isdst 日光节约时间的旗标此函数返回的时间日期未经时区转换,而是UTC时间。返回值返回结构tm代表目前UTC 时间范例#i ncludemain(){char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};time_t timep;struct tm *p;time(&timep);p=gmtime(&timep);printf("%d%d%d",(1900+p->tm_year), (1+p->tm_mon),p->tm_mday);printf("%s%d;%d;%d\n", wday[p->tm_wday], p->tm_hour, p->tm_min, p->tm_sec);}执行2000/10/28 Sat 8:15:38localtime(取得当地目前时间和日期)相关函数time, asctime, ctime, gmtime表头文件#i nclude定义函数struct tm *localtime(const time_t * timep);函数说明localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。结构tm的定义请参考gmtime()。此函数返回的时间日期已经转换成当地时区。返回值返回结构tm代表目前的当地时间。范例#i ncludemain(){char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};time_t timep;struct tm *p;time(&timep);p=localtime(&timep); /*取得当地时间*/printf ("%d%d%d ", (1900+p->tm_year),( l+p->tm_mon), p->tm_mday);printf("%s%d:%d:%d\n", wday[p->tm_wday],p->tm_hour, p->tm_min, p->tm_sec);}执行2000/10/28 Sat 11:12:22mktime(将时间结构数据转换成经过的秒数)相关函数time,asctime,gmtime,localtime表头文件#i nclude定义函数time_t mktime(strcut tm * timeptr);函数说明mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。返回值返回经过的秒数。范例/* 用time()取得时间(秒数),利用localtime()转换成struct tm 再利用mktine()将struct tm转换成原来的秒数*/#i ncludemain(){time_t timep;strcut tm *p;time(&timep);printf("time() : %d \n",timep);p=localtime(&timep);timep = mktime(p);printf("time()->localtime()->mktime():%d\n",timep);}执行time():974943297time()->localtime()->mktime():974943297settimeofday(设置目前时间)相关函数time,ctime,ftime,gettimeofday表头文件#i nclude#i nclude定义函数int settimeofday ( const struct timeval *tv,const struct timezone *tz);函数说明settimeofday()会把目前时间设成由tv所指的结构信息,当地时区信息则设成tz所指的结构。详细的说明请参考gettimeofday()。注意,只有root权限才能使用此函数修改时间。返回值成功则返回0,失败返回-1,错误代码存于errno。错误代码EPERM 并非由root权限调用settimeofday(),权限不够。EINVAL 时区或某个数据是不正确的,无法正确设置时间。time(取得目前的时间)相关函数ctime,ftime,gettimeofday表头文件#i nclude定义函数time_t time(time_t *t);函数说明此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话,此函数也会将返回值存到t指针所指的内存。返回值成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。范例#i ncludemian(){int seconds= time((time_t*)NULL);printf("%d\n",seconds);}Date and Time Functions: <time.h>The header <time.h> declares types and functions for manipulating date and time. Some functions process local time, which may differ from calendar time, for example because of time zone. clock_t and time_t are arithmetic types representing times, and struct tm holds the components of a calendar time: int tm_sec; seconds after the minute (0,61) int tm_min; minutes after the hour (0,59) int tm_hour; hours since midnight (0,23) int tm_mday; day of the month (1,31) int tm_mon; months since January (0,11) int tm_year; years since 1900 int tm_wday; days since Sunday (0,6) int tm_yday; days since January 1 (0,365) int tm_isdst; Daylight Saving Time flag tm_isdst is positive if Daylight Saving Time is in effect, zero if not, and negative if the information is not available. clock_t clock(void) clock returns the processor time used by the program since the beginning of execution, or -1 if unavailable. clock()/CLK_PER_SEC is a time in seconds. time_t time(time_t *tp) time returns the current calendar time or -1 if the time is not available. If tp is not NULL, the return value is also assigned to *tp. double difftime(time_t time2, time_t time1) difftime returns time2-time1 expressed in seconds. time_t mktime(struct tm *tp) mktime converts the local time in the structure *tp into calendar time in the same representation used by time. The components will have values in the ranges shown. mktime returns the calendar time or -1 if it cannot be represented. The next four functions return pointers to static objects that may be overwritten by other calls. char *asctime(const struct tm *tp) asctime*tp into a string of the form Sun Jan 3 15:14:13 1988\n\0char *ctime(const time_t *tp) ctime converts the calendar time *tp to local time; it is equivalent to asctime(localtime(tp)) struct tm *gmtime(const time_t *tp) gmtime converts the calendar time *tp into Coordinated Universal Time (UTC). It returns NULL if UTC is not available. The name gmtime has historical significance. struct tm *localtime(const time_t *tp) localtime converts the calendar time *tp into local time. size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp) strftime formats date and time information from *tp into s according to fmt, which is analogous to a printf format. Ordinary characters (including the terminating '\0') are copied into s. Each %c is replaced as described below, using values appropriate for the local environment. No more than smax characters are placed into s. strftime returns the number of characters, excluding the '\0', or zero if more than smax characters were proced. %a abbreviated weekday name. %A full weekday name. %b abbreviated month name. %B full month name. %c local date and time representation. %d day of the month (01-31). %H hour (24-hour clock) (00-23). %I hour (12-hour clock) (01-12). %j day of the year (001-366). %m month (01-12). %M minute (00-59). %p local equivalent of AM or PM. %S second (00-61). %U week number of the year (Sunday as 1st day of week) (00-53). %w weekday (0-6, Sunday is 0). %W week number of the year (Monday as 1st day of week) (00-53). %x local date representation. %X local time representation. %y year without century (00-99). %Y year with century. %Z time zone name, if any. %% %

D. C语言头文件有哪些

字符处理函数 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换 头文件 ctype.h 函数列表<> 函数类别 函数用途 详细说明 字符测试 是否字母和数字 isalnum 是否字母 isalpha 是否控制字符 iscntrl 是否数字 isdigit 是否可显示字符(除空格外) isgraph 是否可显示字符(包括空格) isprint 是否既不是空格,又不是字母和数字的可显示字符 ispunct 是否空格 isspace 是否大写字母 isupper 是否16进制数字(0-9,A-F)字符 isxdigit 字符大小写转换函数 转换为大写字母 toupper 转换为小写字母 tolower 地区化 本类别的函数用于处理不同国家的语言差异。 头文件 local.h 函数列表 函数类别 函数用途 详细说明 地区控制 地区设置 setlocale 数字格式约定查询 国家的货币、日期、时间等的格式转换 localeconv 数学函数 本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) 头文件 math.h 函数列表 函数类别 函数用途 详细说明 错误条件处理 定义域错误(函数的输入参数值不在规定的范围内) 值域错误(函数的返回值不在规定的范围内) 三角函数 反余弦 acos 反正弦 asin 反正切 atan 反正切2 atan2 余弦 cos 正弦 sin 正切 tan 双曲函数 双曲余弦 cosh 双曲正弦 sinh 双曲正切 tanh 指数和对数 指数函数 exp 指数分解函数 frexp 乘积指数函数 fdexp 自然对数 log 以10为底的对数 log10 浮点数分解函数 modf 幂函数 幂函数 pow 平方根函数 sqrt 整数截断,绝对值和求余数函数 求下限接近整数 ceil 绝对值 fabs 求上限接近整数 floor 求余数 fmod 本分类函数用于实现在不同底函数之间直接跳转代码。 头文件 setjmp.h io.h 函数列表 函数类别 函数用途 详细说明 保存调用环境 setjmp 恢复调用环境 longjmp 信号处理 该分类函数用于处理那些在程序执行过程中发生例外的情况。 头文件 signal.h 函数列表 函数类别 函数用途 详细说明 指定信号处理函数 signal 发送信号 raise 可变参数处理 本类函数用于实现诸如printf,scanf等参数数量可变底函数。 头文件 stdarg.h 函数列表 函数类别 函数用途 详细说明 可变参数访问宏 可变参数开始宏 va_start 可变参数结束宏 va_end 可变参数访问宏 访问下一个可变参数宏 va_arg 输入输出函数 该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以“流”的方式实现 头文件 stdio.h 函数列表 函数类别 函数用途 详细说明 文件操作 删除文件 remove 修改文件名称 rename 生成临时文件名称 tmpfile 得到临时文件路径 tmpnam 文件访问 关闭文件 fclose 刷新缓冲区 fflush 打开文件 fopen 将已存在的流指针和新文件连接 freopen 设置磁盘缓冲区 setbuf 设置磁盘缓冲区 setvbuf 格式化输入与输出函数 格式输出 fprintf 格式输入 fscanf 格式输出(控制台) printf 格式输入(控制台) scanf 格式输出到缓冲区 sprintf 从缓冲区中按格式输入 sscanf 格式化输出 vfprintf 格式化输出 vprintf 格式化输出 vsprintf 字符输入输出函数 输入一个字符 fgetc 字符串输入 fgets 字符输出 fputc 字符串输出 fputs 字符输入(控制台) getc 字符输入(控制台) getchar 字符串输入(控制台) gets 字符输出(控制台) putc 字符输出(控制台) putchar 字符串输出(控制台) puts 字符输出到流的头部 ungetc 直接输入输出 直接流读操作 fread 直接流写操作 fwrite 文件定位函数 得到文件位置 fgetpos 文件位置移动 fseek 文件位置设置 fsetpos 得到文件位置 ftell 文件位置复零位 remind 错误处理函数 错误清除 clearerr 文件结尾判断 feof 文件错误检测 ferror 得到错误提示字符串 perror 实用工具函数 本分类给出了一些函数无法按以上分类,但又是编程所必须要的。 头文件 stdlib.h 函数列表 函数类别 函数用途 详细说明 字符串转换函数 字符串转换为整数 atoi 字符串转换为长整数 atol 字符串转换为浮点数 strtod 字符串转换为长整数 strtol 字符串转换为无符号长整型 strtoul 伪随机序列产生函数 产生随机数 rand 设置随机函数的起动数值 srand 存储管理函数 分配存储器 calloc 释放存储器 free 存储器分配 malloc 重新分配存储器 realloc 环境通信 中止程序 abort 退出程序执行,并清除环境变量 atexit 退出程序执行 exit 读取环境参数 getenv 程序挂起,临时执行一个其他程序 system 搜索和排序工具 二分查找(数据必须已排序) bsearch 快速排序 qsort 整数运算函数 求绝对值 abs div 得到除法运算底商和余数 求长整形底绝对值 labs 求长整形除法的商和余数 ldiv 多字节字符函数 得到多字节字符的字节数 mblen 得到多字节字符的字节数 mbtowc 多字节字符转换 wctomb 多字节字符的字符串操作 将多字节串转换为整数数组 mbstowcs 将多字节串转换为字符数组 mcstowbs 字符串处理 本分类的函数用于对字符串进行合并、比较等操作 头文件 string.h 函数列表 函数类别 函数用途 详细说明 字符串拷贝 块拷贝(目的和源存储区不可重叠) memcpy 块拷贝(目的和源存储区可重叠) memmove 串拷贝 strcpy 按长度的串拷贝 strncpy 字符串连接函数 串连接 strcat 按长度连接字符串 strncat 串比较函数 块比较 memcmp 字符串比较 strcmp 字符串比较(用于非英文字符) strcoll 按长度对字符串比较 strncmp 字符串转换 strxfrm 字符与字符串查找 字符查找 memchr 字符查找 strchr 字符串查找 strcspn 字符串查找 strpbrk 字符串查找 strspn 字符串查找 strstr 字符串分解 strtok 杂类函数 字符串设置 memset 错误字符串映射 strerror 求字符串长度 strlen 日期和时间函数 本类别给出时间和日期处理函数 头文件 time.h 函数列表 函数类别 函数用途 详细说明 时间操作函数 得到处理器时间 clock 得到时间差 difftime 设置时间 mktime 得到时间 time 时间转换函数 得到以ASCII码表示的时间 asctime 得到字符串表示的时间 ctime 得到指定格式的时间 strftime 函数库未来的发展方向 本部分用于说明各类别函数库在将来如何发展。 序号 库类别 头文件 详细说明 1 错误处理 errno.h 2 字符处理 ctype.h 3 地区化 local.h 4 数学函数 math.h 5 信号处理 signal.h 6 输入输出 stdio.h 7 实用工具程序 stdlib.h 8 字符串处理 string.h

E. C语言中time.h头文件中对时间的操作具体是怎样的

time.h头文件提供对时间操作的一些函数,clock()是程序开始到调用的毫秒数。

time_tt_begin,t_end;

t_begin=clock();//记录开始时间

dosomething();//调用函数

t_end=clock();//记录结束时间

printf("Timeused=%.21f",(double)(t_end-t_begin)/CLOCKS_PER_SEC);//显示函数调用时间

(5)cclock头文件扩展阅读

c语言中time.h头文件的使用

#include<stdio.h>

#include<stdlib.h>

#include<time.h>

intmain(void)

{

longi=10000000L;

clock_tstart,finish;

doubleration;//测量一个事件持续的时间

printf("Timetodo%ldemptyloopsis",i);

start=clock();

while(i–)

finish=clock();

ration=(double)(finish-start)/CLOCKS_PER_SEC;//clock()是以毫秒为单位计算时间的所以除以CLOCKS_PER_SEC这是time.h里面定义的一个常量

printf("%fseconds",ration);

system("pause");

}

F. c语言 多文件多函数结构

C++编程入门系列之二十四(C++程序设计必知:多文件结构和编译预处理命令)分类标签: C++ 编程入门 – 鸡啄米上一讲给大家讲了常引用、常对象和对象的常成员,今天给大家讲下编程入门知识–多文件结构和编译预处理命令。 一.C++程序的多文件结构 之前鸡啄米给大家看了很多比较完整的C++程序的例子,大家可能发现了,它们的结构基本上可以分为三个部分:类的声明、类的成员函数的实现和主函数。因为代码比较少,所以可以把它们写在一个文件中,但是我们实际进行软件开发时,程序会比较复杂,代码量比较大, 一个程序按结构至少可以划分为三个文件:类的声明文件(*.h文件)、类的实现文件(*.cpp文件)和主函数文件(使用到类的文件),如果程序更复杂,我们会为每个类单独建一个声明文件和一个实现文件。这样我们要修改某个类时就直接找到它的文件修改即可,不需要其他的文件改动。 鸡啄米在第十九讲中讲生存期时有个时钟类的例子,现在鸡啄米给大家看下将那个程序按照上面说的结构分到三个文件里: // 文件1:Clock类的声明,可以起名为Clock.h #include <iostream> using namespace std; class Clock //时钟类声明 { public: //外部接口 Clock(); void SetTime(int NewH, int NewM, int NewS); //三个形参均具有函数原型作用域 void ShowTime(); ~Clock(){} private: //私有数据成员 int Hour,Minute,Second; }; // 文件2:Clock类的实现,可以起名为Clock.cpp #include "Clock.h" //时钟类成员函数实现 Clock::Clock() //构造函数 { Hour=0; Minute=0; Second=0; } void Clock::SetTime(int NewH,int NewM,int NewS) { Hour=NewH; Minute=NewM; Second=NewS; } void Clock::ShowTime() { cout<<Hour<<":"<<Minute<<":"<<Second<<endl; } // 文件3:主函数,可以起名为main.cpp #include "Clock.h" //声明全局对象g_Clock,具有文件作用域,静态生存期 Clock g_Clock; int main() //主函数 { cout<<"文件作用域的时钟类对象:"<<endl; //引用具有文件作用域的对象: g_Clock.ShowTime(); g_Clock.SetTime(10,20,30); Clock myClock(g_Clock); //声明具有块作用域的对象myClock,并通过默认拷贝构造函数用g_Clock初始化myClock cout<<"块作用域的时钟类对象:"<<endl; myClock.ShowTime(); //引用具有块作用域的对象 } 在vs2010中如何生成这三个文件呢?我们可以点菜单中Project->Add Class,在弹出的对话框中选择c++ class,然后由弹出个对话框,在class name处填上类名点finish就可以了,这样.h文件和.cpp文件会自动生成,我们也可以点Project->Add New Item,在弹出的对话框中选择Header File(.h)或C++ File(.cpp)来生成.h文件或.cpp文件。 Clock.cpp和main.cpp都使用#include "Clock.h"把类Clock的头文件Clock.h包含进来。#include指令的作用就是将#include后面的文件嵌入到当前源文件该点处,被嵌入的文件可以是.h文件也可以是.cpp文件。如果不包含Clock.h,Clock.cpp和main.cpp就不知道Clock类的声明形式,就无法使用此类,所以所有使用此类的文件都应该包含声明它的头文件。关于#include指令下面鸡啄米会讲。 上面的程序在编译时,由Clock.cpp和Clock.h编译生成Clock.obj,由main.cpp和Clock.h编译生成main.obj,然后就是链接过程,Clock.obj和main.obj链接生成main.exe可执行文件。如果我们只修改了类的实现文件,那么只需重新编译Clock.cpp并链接就可以,别的文件不用管,这样就提高了效率。在Windows系统中的C++程序用工程来管理多文件结构,而Unix系统一般用make工具管理,如果大家从事Unix系统软件开发,就需要自己写make文件。 二.编译预处理程序 编译器在编译源程序以前,要由预处理程序对源程序文件进行预处理。预处理程序提供了一些编译预处理指令和预处理操作符。预处理指令都要由“#”开头,每个预处理指令必须单独占一行,而且不能用分号结束,可以出现在程序文件中的任何位置。 1.#include指令 #include指令也叫文件包含指令,用来将另一个源文件的内容嵌入到当前源文件该点处。其实我们一般就用此指令来包含头文件。#include指令有两种写法: #include <文件名> 使用这种写法时,会在C++安装目录的include子目录下寻找<>中标明的文件,通常叫做按标准方式搜索。 #include "文件名" 使用这种写法时,会先在当前目录也就是当前工程的目录中寻找""中标明的文件,若没有找到,则按标准方式搜索。2.#define和#undef指令 如果你学过C语言,就会知道用#define可以定义符号常量,比如,#define PI 3.14 这条指令定义了一个符号常量PI,它的值是3.14。C++也可以这样定义符号常量,但一般更常用的是在声明时用const关键字修饰。C语言还用#define定义参数宏,来实现简单的函数运算,比如,#define add(x,y) (x+y) 这条指令说明如果我们用到add(1,2)则预处理后就会用(1+2)代替,C++中一般用内联函数来实现。 #undef用来删除由#define定义的宏,使其不再起作用。 3.条件编译指令 用条件编译指令可以实现某些代码在满足一定条件时才会参与编译,这样我们可以利用条件编译指令将同一个程序在不同的编译条件下生成不同的目标代码。例如,我们可以在调试程序时加入一些调试语句,用条件编译指令控制只有在debug模式下这些调试语句才参与编译,而在release模式下不参与编译。 条件编译指令有5中形式: a.第一种形式: #if 常量表达式 程序正文 //当“ 常量表达式”非零时本程序段参与编译 #endif b.第二种形式: #if 常量表达式 程序正文1 //当“ 常量表达式”非零时本程序段参与编译 #else 程序正文2 //当“ 常量表达式”为零时本程序段参与编译 #endif c.第三种形式: #if 常量表达式1 程序正文1 //当“ 常量表达式1”非零时本程序段参与编译 elif 常量表达式2 程序正文2 //当“常量表达式1”为零、“ 常量表达式2”非零时本程序段参与编译 … elif 常量表达式n 程序正文n //当“常量表达式1”、…、“常量表达式n-1”均为零、“ 常量表达式n”非零时本程序段参与编译 #else 程序正文n+1 //其他情况下本程序段参与编译 #endif d.第四种形式: #ifdef 标识符 程序段1 #else 程序段2 #endif 如果“标识符”经#defined定义过,且未经undef删除,则编译程序段1,否则编译程序段2。 e.第五种形式: #ifndef 标识符 程序段1 #else 程序段2 #endif 如果“标识符”未被定义过,则编译程序段1,否则编译程序段2。 4.define操作符 define是预处理操作符,不是指令,所以不能用#开头。使用形式为:define(标识符)。如果括号里的标识符用#define定义过,并且没有用#undef删除,则define(标识符)为非0,否则为0。可以这样使用: #if !define(HEAD_H) #define HEAD_H 我们在包含头文件时,有时多次重复包含同一个头文件,比如下面这种情况: // main.cpp文件 #include "file1.h" #include "file2.h" int main() { … } // file1.h文件 #include "head.h" … // file2.h文件 #include "head.h" … // head.h文件 … class A { … } … main.cpp包含了file1.h文件,file1.h又包含了head.h文件,main.cpp还包含了file2.h文件,file2.h也包含了head.h文件,那么main.cpp就包含了两次head.h文件,在编译时就会报错,说head.h中的类A重复定义了。这时我们可以在被重复包含的文件head.h中使用条件编译指令,用一个唯一的标识符来标识head.h文件是否已经编译过,如果已经编译过则不会重复编译了。鸡啄米给大家改写下上面的head.h文件: // head.h文件 #ifndef HEAD_H #define HEAD_H … class A { … } … #endif 在这个改好的head.h文件中,上来会先判断HEAD_H是否被定义过,如果没有被定义过,则head.h文件还没参与过编译,就编译此文件中的源代码,同时定义HEAD_H,标记head.h文件已经参与过编译。如果HEAD_H已经被定义过,则说明此文件已经参与过编译,编译器会跳过本文件左右内容编译其他部分,类A也不会有重复定义的错误了。

G. C语言头文件有哪些

字符处理函数 x0dx0a本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换 x0dx0ax0dx0a头文件 ctype.h x0dx0ax0dx0a函数列表 x0dx0a函数类别 函数用途 详细说明 x0dx0a字符测试 是否字母和数字 isalnum x0dx0a是否字母 isalpha x0dx0a是否控制字符 iscntrl x0dx0a是否数字 isdigit x0dx0a是否可显示字符(除空格外) isgraph x0dx0a是否可显示字符(包括空格) isprint x0dx0a是否既不是空格,又不是字母和数字的可显示字符 ispunct x0dx0a是否空格 isspace x0dx0a是否大写字母 isupper x0dx0a是否16进制数字(0-9,A-F)字符 isxdigit x0dx0a字符大小写转换函数 转换为大写字母 toupper x0dx0a转换为小写字母 tolower x0dx0ax0dx0a地区化 x0dx0a本类别的函数用于处理不同国家的语言差异。 x0dx0ax0dx0a头文件 local.h x0dx0ax0dx0a函数列表 x0dx0a函数类别 函数用途 详细说明 x0dx0a地区控制 地区设置 setlocale x0dx0a数字格式约定查询 国家的货币、日期、时间等的格式转换 localeconv x0dx0ax0dx0a数学函数 x0dx0a本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) x0dx0ax0dx0a头文件 math.h x0dx0ax0dx0a函数列表 x0dx0a函数类别 函数用途 详细说明 x0dx0a错误条件处理 定义域错误(函数的输入参数值不在规定的范围内) x0dx0a值域错误(函数的返回值不在规定的范围内) x0dx0a三角函数 反余弦 acos x0dx0a反正弦 asin x0dx0a反正切 atan x0dx0a反正切2 atan2 x0dx0a余弦 cos x0dx0a正弦 sin x0dx0a正切 tan x0dx0a双曲函数 双曲余弦 cosh x0dx0a双曲正弦 sinh x0dx0a双曲正切 tanh x0dx0a指数和对数 指数函数 exp x0dx0a指数分解函数 frexp x0dx0a乘积指数函数 fdexp x0dx0a自然对数 log x0dx0a以10为底的对数 log10 x0dx0a浮点数分解函数 modf x0dx0a幂函数 幂函数 pow x0dx0a平方根函数 sqrt x0dx0a整数截断,绝对值和求余数函数 求下限接近整数 ceil x0dx0a绝对值 fabs x0dx0a求上限接近整数 floor x0dx0a求余数 fmod x0dx0ax0dx0a本分类函数用于实现在不同底函数之间直接跳转代码。 头文件 setjmp.h io.h x0dx0ax0dx0a函数列表 x0dx0a函数类别 函数用途 详细说明 x0dx0a保存调用环境 setjmp x0dx0a恢复调用环境 longjmp x0dx0ax0dx0a信号处理 x0dx0a该分类函数用于处理那些在程序执行过程中发生例外的情况。 x0dx0ax0dx0a头文件 signal.h x0dx0ax0dx0a函数列表 x0dx0a函数类别 函数用途 详细说明 x0dx0a指定信号处理函数 signal x0dx0a发送信号 raise x0dx0ax0dx0a可变参数处理 x0dx0a本类函数用于实现诸如printf,scanf等参数数量可变底函数。 x0dx0ax0dx0a头文件 stdarg.h x0dx0ax0dx0a函数列表 x0dx0a函数类别 函数用途 详细说明 x0dx0a可变参数访问宏 可变参数开始宏 va_start x0dx0a可变参数结束宏 va_end x0dx0a可变参数访问宏 访问下一个可变参数宏 va_arg x0dx0ax0dx0a输入输出函数 x0dx0a该分类用于处理包括文件、控制台等各种输入输出设备,各种函数以“流”的方式实现 x0dx0ax0dx0a头文件 stdio.h x0dx0ax0dx0a函数列表 x0dx0a函数类别 函数用途 详细说明 x0dx0a文件操作 x0dx0a删除文件 remove x0dx0a修改文件名称 rename x0dx0a生成临时文件名称 tmpfile x0dx0a得到临时文件路径 tmpnam x0dx0a文件访问 关闭文件 fclose x0dx0a刷新缓冲区 fflush x0dx0a打开文件 fopen x0dx0a将已存在的流指针和新文件连接 freopen x0dx0a设置磁盘缓冲区 setbuf x0dx0a设置磁盘缓冲区 setvbuf x0dx0a格式化输入与输出函数 格式输出 fprintf x0dx0a格式输入 fscanf x0dx0a格式输出(控制台) printf x0dx0a格式输入(控制台) scanf x0dx0a格式输出到缓冲区 sprintf x0dx0a从缓冲区中按格式输入 sscanf x0dx0a格式化输出 vfprintf x0dx0a格式化输出 vprintf x0dx0a格式化输出 vsprintf x0dx0a字符输入输出函数 输入一个字符 fgetc x0dx0a字符串输入 fgets x0dx0a字符输出 fputc x0dx0a字符串输出 fputs x0dx0a字符输入(控制台) getc x0dx0a字符输入(控制台) getchar x0dx0a字符串输入(控制台) gets x0dx0a字符输出(控制台) putc x0dx0a字符输出(控制台) putchar x0dx0a字符串输出(控制台) puts x0dx0a字符输出到流的头部 ungetc x0dx0a直接输入输出 直接流读操作 fread x0dx0a直接流写操作 fwrite x0dx0a文件定位函数 得到文件位置 fgetpos x0dx0a文件位置移动 fseek x0dx0a文件位置设置 fsetpos x0dx0a得到文件位置 ftell x0dx0a文件位置复零位 remind x0dx0a错误处理函数 错误清除 clearerr x0dx0a文件结尾判断 feof x0dx0a文件错误检测 ferror x0dx0a得到错误提示字符串 perror x0dx0ax0dx0a实用工具函数 x0dx0a本分类给出了一些函数无法按以上分类,但又是编程所必须要的。 x0dx0ax0dx0a头文件 stdlib.h x0dx0ax0dx0a函数列表 x0dx0a函数类别 函数用途 详细说明 x0dx0a字符串转换函数 字符串转换为整数 atoi x0dx0a字符串转换为长整数 atol x0dx0a字符串转换为浮点数 strtod x0dx0a字符串转换为长整数 strtol x0dx0a字符串转换为无符号长整型 strtoul x0dx0a伪随机序列产生函数 产生随机数 rand x0dx0a设置随机函数的起动数值 srand x0dx0a存储管理函数 分配存储器 calloc x0dx0a释放存储器 free x0dx0a存储器分配 malloc x0dx0a重新分配存储器 realloc x0dx0a环境通信 中止程序 abort x0dx0a退出程序执行,并清除环境变量 atexit x0dx0a退出程序执行 exit x0dx0a读取环境参数 getenv x0dx0a程序挂起,临时执行一个其他程序 system x0dx0a搜索和排序工具 二分查找(数据必须已排序) bsearch x0dx0a快速排序 qsort x0dx0a整数运算函数 求绝对值 abs x0dx0adiv x0dx0a得到除法运算底商和余数 x0dx0a求长整形底绝对值 labs x0dx0a求长整形除法的商和余数 ldiv x0dx0a多字节字符函数 得到多字节字符的字节数 mblen x0dx0a得到多字节字符的字节数 mbtowc x0dx0a多字节字符转换 wctomb x0dx0a多字节字符的字符串操作 将多字节串转换为整数数组 mbstowcs x0dx0a将多字节串转换为字符数组 mcstowbs x0dx0ax0dx0a字符串处理 x0dx0a本分类的函数用于对字符串进行合并、比较等操作 x0dx0ax0dx0a头文件 string.h x0dx0ax0dx0a函数列表 x0dx0a函数类别 函数用途 详细说明 x0dx0a字符串拷贝 块拷贝(目的和源存储区不可重叠) memcpy x0dx0a块拷贝(目的和源存储区可重叠) memmove x0dx0a串拷贝 strcpy x0dx0a按长度的串拷贝 strncpy x0dx0a字符串连接函数 串连接 strcat x0dx0a按长度连接字符串 strncat x0dx0a串比较函数 块比较 memcmp x0dx0a字符串比较 strcmp x0dx0a字符串比较(用于非英文字符) strcoll x0dx0a按长度对字符串比较 strncmp x0dx0a字符串转换 strxfrm x0dx0a字符与字符串查找 字符查找 memchr x0dx0a字符查找 strchr x0dx0a字符串查找 strcspn x0dx0a字符串查找 strpbrk x0dx0a字符串查找 strspn x0dx0a字符串查找 strstr x0dx0a字符串分解 strtok x0dx0a杂类函数 字符串设置 memset x0dx0a错误字符串映射 strerror x0dx0a求字符串长度 strlen x0dx0ax0dx0a日期和时间函数 x0dx0a本类别给出时间和日期处理函数 x0dx0ax0dx0a头文件 time.h x0dx0ax0dx0a函数列表 x0dx0a函数类别 函数用途 详细说明 x0dx0a时间操作函数 得到处理器时间 clock x0dx0a得到时间差 difftime x0dx0a设置时间 mktime x0dx0a得到时间 time x0dx0a时间转换函数 得到以ASCII码表示的时间 asctime x0dx0a得到字符串表示的时间 ctime x0dx0a得到指定格式的时间 strftime x0dx0ax0dx0a函数库未来的发展方向 x0dx0a本部分用于说明各类别函数库在将来如何发展。 x0dx0ax0dx0a序号 库类别 头文件 详细说明 x0dx0a1 错误处理 errno.h x0dx0a2 字符处理 ctype.h x0dx0a3 地区化 local.h x0dx0a4 数学函数 math.h x0dx0a5 信号处理 signal.h x0dx0a6 输入输出 stdio.h x0dx0a7 实用工具程序 stdlib.h x0dx0a8 字符串处理 string.h

H. 请问C语言中clock()函数该怎么用

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。

它的具体功能是返回处理器调用某个进程或函数所花费的时间。函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,其中clock_t是用来保存时间的数据类型。

在time.h文件中,我们可以找到对它的定义:

#ifndef _CLOCK_T_DEFINED

typedef long clock_t;

#define _CLOCK_T_DEFINED

#endif

clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。

clock的返回值一直是0的原因:

1、编译器优化,for循环实际根本没执行,直接跳过去了,所以时间为0。

2、clock计算的是程序占用cpu的时间,如果你的程序执行的动作很少,那么clock算出的时间也很少。

3、建议使用time gettimeofday函数来计时。

(8)cclock头文件扩展阅读:

C语言中clock()函数的程序例1:(TC下运行通过)

#include<stdio.h>

#include<time.h>

intmain(void)

{

clock_tstart,end;

start=clock();

delay(2000);

end=clock();

printf("Thetimewas:%f",(double)(end-start)/CLK_TCK);

return0;

}

说明:CLK_TCK定义在TC中的time.h中:#defineCLK_TCK18.2。

在VC6.0中也有关于CLK_TCK的宏定义,不过其值不再是18.2,而是1000。

实际上在VC6.0中CLK_TCK已完全等同CLOCKS_PER_SEC。

I. c语言如何计时

C语言中提供了许多库函数来实现计时功能

下面介绍一些常用的计时函数

1. time()

头文件:.h

函数原型:time_t time(time_t * timer)

功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的时此刻所经过的秒数

用time()函数结合其他函数(如:localtime、gmtime、asctime、ctime)可以获得当前系统时间或是标准时间。

用difftime函数可以计算两个time_t类型的时间的差值,可以用于计时。用difftime(t2,t1)要比t2-t1更准确,因为C标准中并没有规定time_t的单位一定是秒,而difftime会根据机器进行转换,更可靠。

说明:C标准库中的函数,可移植性最好,性能也很稳定,但精度太低,只能精确到秒,对于一般的事件计时还算够用,而对运算时间的计时就明显不够用了。

2. clock()

头文件:time.h

函数原型:clock_t clock(void);

功能:该函数返回值是硬件滴答数,要换算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000。

说明:可以精确到毫秒,适合一般场合的使用。

3. timeGetTime()

头文件:Mmsystem.h引用库: Winmm.lib

函数原型:DWORD timeGetTime(VOID);

功能:返回系统时间,以毫秒为单位。系统时间是从系统启动到调用函数时所经过的毫秒数。注意,这个值是32位的,会在0到2^32之间循环,约49.71天。

说明:该函数的时间精度是五毫秒或更大一些,这取决于机器的性能。可用timeBeginPeriod和timeEndPeriod函数提高timeGetTime函数的精度。如果使用了,连续调用timeGetTime函数,一系列返回值的差异由timeBeginPeriod和timeEndPeriod决定。

4. GetTickCount()

头文件:windows.h

函数原型:DWORD WINAPI GetTickCount(void);

功能:返回自设备启动后的毫秒数(不含系统暂停时间)。

说明:精确到毫秒。对于一般的实时控制,使用GetTickCount()函数就可以满足精度要求。

5. QueryPerformanceCounter()、QueryPerformanceFrequency()

头文件:windows.h

函数原型:BOOLQueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount);

BOOLQueryPerformanceFrequency(LARGE_INTEGER *lpFrequency);

功能:前者获得的是CPU从开机以来执行的时钟周期数。后者用于获得你的机器一秒钟执行多少次,就是你的时钟周期。

补充:LARGE_INTEGER既可以是一个8字节长的整型数,也可以是两个4字节长的整型数的联合结构, 其具体用法根据编译器是否支持64位而定:

在进行定时之前,先调用QueryPerformanceFrequency()函数获得机器内部定时器的时钟频率,然后在需要严格定时的事件发生之前和发生之后分别调用QueryPerformanceCounter()函数,利用两次获得的计数之差及时钟频率,计算出事件经历的精确时间。

说明:这种方法的定时误差不超过1微秒,精度与CPU等机器配置有关,一般认为精度为透微秒级。在Windows平台下进行高精度计时的时候可以考虑这种方法。

6. gettimeofday()

linux C函数。

头文件:sys/time.h

函数原型:int gettimeofday(struct timeval *tv,struct timezone *tz);

说明:其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果(若不使用则传入NULL即可)。

timeval的定义为:

structtimeval{

longtv_sec;//秒数

longtv_usec;//微秒数

}

可见该函数可用于在linux中获得微秒精度的时间。

说明:使用这种方式计时,精度可达微秒。经验证,在arm+linux的环境下此函数仍可使用。

J. 在C语言中如何实现精确计时

time() 头文件:time.h 函数原型:time_t time(time_t * timer) 功能:返回以格林尼治时间(GMT)为标准,从1970年专1月1日00:00:00到现在的此时此刻所经过的秒属数。

2.clock() 头文件:time.h 函数原型:clock_t clock(void); 功能:该函数返回值是硬件滴答数,要换算成秒,需要除以CLK_TCK或者 CLK_TCKCLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000。

3. timeGetTime() 头文件:Mmsystem.h 引用库: Winmm.lib 函数原型:DWORD timeGetTime(VOID); 功能:返回系统时间,以毫秒为单位。系统时间是从系统启动到调用函数时所经过的毫秒数。注意,这个值是32位的,会在0到2^32之间循环,约49.71天。


赞 (0)