C语言常用函数知识点笔记
(1)Windows函数中的system函数
头文件#include<stdlib.h>
函数原型int system(char *command);
system("pause") |
可以实现冻结屏幕,便于观察程序的执行结果 |
system("CLS") |
可以实现清屏操作 |
system("color 3E") 3是背景色代号,E是前景色代号 |
0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色 |
system("title C语言程序") |
设置cmd窗口标题 |
system("mode con cols=48 lines=25") |
窗口宽度高度 |
(2)PlaySound()函数播放声音文件
头文件#include <mmsystem.h>
函数原型BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound);
#include <mmsystem.h> //导入声音头文件
#pragma comment(lib,"winmm.lib") //导入声音头文件库
参数pszSound是要播放声音的文件名,只支持WAV等格式的文件
参数hmod是应用程序的实例句柄,一般传递NULL就可以;
参数fdwSound是标志的组合掩码,可选值有SND_FILENAME、SND_ASYNC、SND_SYNC等。
播放标志 |
含义 |
SND_APPLICATION |
用应用程序指定的关联来播放声音 |
SND_ALIAS |
参数指定了注册表或WIN.INI中的系统事件的别名 |
SND_ALIAS_ID |
pszSound 参数指定了预定义的声音标识符 |
SND_ASYNC |
用异步方式播放声音,PlaySound函数在开始播放后立即返回 |
SND_FILENAME |
pszSound 参数指定了WAVE文件名 |
SND_LOOP |
重复播放声音,必须与SND_ASYNC标志一块使用 |
SND_MEMORY |
播放载入到内存中的声音,此时pszSound是指向声音数据的指针 |
SND_NODEFAULT |
不播放缺省声音,若无此标志,则PlaySound在没找到声音时会播放缺省声音 |
SND_NOSTOP PlaySound |
不打断原来的声音播出并立即返回FALSE |
SND_NOWAIT |
如果驱动程序正忙则函数就不播放声音并立即返回 |
SND_PURGE |
停止所有与调用任务有关的声音。若参数pszSound为NULL,就停止所有的声音,否则,停止pszSound指定的声音 |
SND_RESOURCE |
pszSound 参数是WAVE资源的标识符,这时要用到hmod参数 |
SND_SYNC |
同步播放声音,在播放完后PlaySound函数才返回 |
(3)time时间函数
函数用途 函数名
得到处理器时间 clock
得到时间差 difftime
设置时间 mktime
得到时间 time time_t time(time_t * timer)
得到以 ASCII码表示的时间 asctime
得到字符串表示的时间 ctime
得到指定格式的时间 strftime
用标准C实现获取当前系统时间的函数
1、time()函数
time(&rawtime)函数获取当前时间距1970年1月1日的秒数,单位秒,存于rawtime 中。
#include "time.h"
void main ()
{
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
printf ( "\007The current date/time is: %s", asctime (timeinfo) );
exit(0);
}
===============================================================================
#include 必须的时间函数头文件
time_t 时间类型(time.h 定义是typedef long time_t)
time(&rawtime) 获取时间,以秒计,从1970年1月一日起算,存于rawtime
localtime(&rawtime) 转为当地时间,tm 时间结构
asctime() 转为标准ASCII时间格式:星期 月 日 时:分:秒 年
===============================================================================
struct tm--时间结构体,在time.h中定义如下:
struct tm
{
int tm_sec; /* 秒–取值区间为[0,59] */
int tm_min; /* 分-取值区间为[0,59] */
int tm_hour; /* 时-取值区间为[0,23] */
int tm_mday; /* 一个月中的日期-取值区间为[1,31] */
int tm_mon; /* 月份-从一月开始,0代表一月,取值区间为[0,11] */
int tm_year; /* 年份-其值等于实际年份减去1900 */
int tm_wday; /* 星期–取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推 */
int tm_yday; /* 从每年的1月1日开始的天数,取值区间为[0,365],其中0代表1月1日,1代表1
月2日,以此类推 */
int tm_isdst; /* 夏令时标识符*/
long int tm_gmtoff; /*指定了日期变更线东面时区中UTC东部时区正秒数或UTC西部时区的负秒数*/
const char *tm_zone; /*当前时区的名字(与环境变量TZ有关)*/
};
===============================================================================
2、clock()函数,用clock()函数,得到系统启动以后的毫秒级时间,然后除以CLOCKS_PER_SEC,就可以换成“秒”
clock_t clock ( void );
clock_t t = clock();
long sec = t / CLOCKS_PER_SEC;
===============================================================================
综合应用举例
/**
* @Copyright(c) 2018 Allrightreserved
* @项目名称:测试时间函数、音乐播放器和system函数
* @完成时间:2018年3月10日
* @开发平台:VS2017
* @未央
*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h> //时间函数头文件
#include<Windows.h>
#include<mmsystem.h> //音乐播放头文件
#pragma comment(lib,"winmm.lib") //音乐播放文件库导入(不可缺少)
int main()
{
clock_t start,finish;
double t=0.0;
/*system函数的使用,包含在头文件stdlib.h中*/
system("title 测试代码");
system("mode con cols=64 lines=25");
system("color 3E");
start=clock(); //测试时间起点
/*音乐播放功能实现,包含在头文件mmsystem.h中*/
printf("\t------播放音乐------\n");
PlaySound(TEXT("sounds\\1.wav"),NULL,SND_FILENAME|SND_LOOP); //播放背景音乐
finish = clock(); //测试时间终点
t=(double)(finish-start)/CLOCKS_PER_SEC;
printf("\n\n\t执行时间: %f s\n\n",t);
/*获取当前时间*/
time_t nowtime;
struct tm *t1;
nowtime=time(NULL);
time(&nowtime);
t1=localtime(&nowtime);
printf("\t获取当前时间:%s\n\n", asctime(t1));
printf("\t获取当前时间:%4d年%02d月%02d日 %02d:%02d:%02d\n\n",t1->tm_year+1900,t1->tm_mon+1,t1->tm_mday,t1->tm_hour,t1->tm_min,t1->tm_sec);
//time_t nowtime;
time(&nowtime);
printf("\t获取当前时间:%s\n\n", ctime(&nowtime));
system("pause");
return 0;
}