• 个人简介

    [一钩出站的个人空间_哔哩哔哩_bilibili] 交通迷一枚

    根题库 练习题库 考试题库 课程题库
    Lv10🎉️ Lv7😕 LV10🎉️
    1🎉️ 29😄 93😕 3🎉️

    image image

    早期曲折历程

    中国第一条铁路——上海吴淞铁路,也是英国商人为自己利益,于1876年不顾清朝政府反对而强行修筑的。一个多世纪的中国铁路史,浸透着国人的铁路情结,更见证了中国与世界关系变迁以及中国发展的轨迹^ [22][1]() 。

    清政府在中日甲午战争中战败后,八国联军攫取中国的铁路权益。在清政府修建铁路时期(1876-1911),中国修建铁路约9400公里。其中,帝国主义直接修建经营的约占41%;帝国主义通过贷款控制的约占39%;中国国有铁路,包括自力更生修建的京张铁路和商办铁路及赎回的京汉、广三等铁路,仅占20%左右。

    进入民国之后,在国衰民穷、连年战争的情况下,中国铁路状况一直未得到改变。在南京国民党政府修建铁路时期(1928-1948),中国大陆共修建铁路约1.3万公里;到1949年,中国可统计的机车有4069台,分别出自9个国家的30多家工厂,机车型号多达198种。

    1949年10月1日,新中国成立后,这一年共抢修恢复了8278公里铁路;到1949年底,全国铁路营业里程共达2.1810万公里,客货换算周转量314.01亿吨公里。1952年6月18日,满州里至广州间开行了第一列直达列车,全程4600多公里畅通无阻;到1952年底,全国铁路营业里程增加到2.2876万公里,客货换算周转量达802.24亿吨公里。

    1952年7月1日,新中国第一条铁路—成渝铁路成功通车^ [1][2]() 。

    从1953年开始,国家进入有计划发展国民经济的时期。到1980年铁路经过了5个“五年计划”的建设,取得了辉煌的成绩。到1980年底,铁路营业里程达4.9940万公里,全国铁路网骨架基本形成,客货换算周转量达7087亿吨公里。

    新中国铁路事业的开拓者施锡祉同志新中国铁路事业的开拓者施锡祉同志

    1978年12月18日至22日,中共十一届三中全会召开。邓小平在会议闭幕式上作了题为《解放思想,实事求是,团结一致向前看》的重要讲话。标志着中共从根本上冲破了长期“左”倾错误的严重束缚,端正了党的指导思想,使广大党员、干部和群众从过去盛行的个人崇拜和教条主义束缚中解放出来,在思想上、政冶上、组织上全面恢复和确立了马克思主义的正确路线,将党领导的社会主义事业引向健康发展的道路。党的十一届三中全会揭开了党和国家历史的新篇章,是中华人民共和国成立以来我党历史上具有深远意义的伟大转折,国民经济也进入新的发展时期。

    1982年9月1日至11日,中共十二届代表大会在北京召开。会议确定了党为全面开创社会主义现代化建设新局面而奋斗的纲领,提出到20世纪末工农业生产总值要翻两番的目标,指出“铁路运输已成为制约国民经济发展的一个重要原因”,并提出“北战大秦,南攻衡广,中取华东”的铁路大动脉建设战略^ [4][3]() 。

    跨越式发展

    2003年,铁道部设计出了“推动中国铁路跨越式发展”的总战略,提出在“十一五”期间,全国铁路营业里程达到9.1万公里,快速客运网总规模达到2万公里以上的远景规划;提出在引进国外高速列车先进技术后,为落实《国家中长期科学和技术发展规划纲要(2006-2020年)》的要求,通过高速铁路核心技术体系的自主创新满足中国铁路发展需要的新战略目标。

    2004年1月7日,国务院常务会议讨论并原则通过了《国家中长期科学和技术发展规划纲要(2006-2020年)》,明确了中国铁路网中长期建设目标:到2020年,全国铁路营业里程达到10万公里,主要繁忙干线实现客货分线,复线率和电气化率分别达到50%,运输能力满足国民经济和社会发展需要,主要技术装备达到或接近国际先进水平。

    2005年1月12日,铁道部表示,中国铁路大规模建设已经拉开序幕,建设总投资规模将达5000多亿元。

    2007年4月18日,中国第六次铁路大提速正式展开,CRH1、CRH2、CRH5等系列动车组大规模上线运行,列车运行时速达200公里/小时。其中京哈、京广、京沪、胶济线部分区段时速达到250公里/小时,中国从此进入了高速铁路时代。货运方面,在既有提速干线开行时速120公里/小时、载重5000吨货运重载列车。通过此次提速,中国铁路客货运输能力分别增长18% 和12%。

    2008年2月26日,科技部与铁道部共同签署了《中国高速列车自主创新联合行动计划合作协议》。大力推进中国标准动车组研制工作,推进30吨轴重机车车辆关键技术深化研究和样车研制;推进高速铁路CRTSⅢ型板式无砟轨道、长大复杂桥梁、列控系统、牵引供电、30吨轴重重载铁路道岔、轨枕、扣件、无砟轨道技术及评估监测、新一代客票系统、货运电子商务系统、运营维护等关键技术的研究。

    2008年8月1日,中国第一条具有自主知识产权、国际一流水平的高速铁路—京津城际铁路正式通车^ [1][4]() 。

    与此同时,自2007年4月18日起,在中国铁路第6次大提速调图后开行CRH动车组列车(包括G、C、D三种车次类型)。CRH动车组俨然成为中国铁路最流行的词语,乘坐CRH动车组出行已成为旅客经由新建铁路或在主要城市间出行的首选。在主要干线开行时速200公里以上动车组、大面积开行5000吨级货物列车和一大批先进技术装备投入运用。

    2009年12月9日,武广高铁试运行成功,于26日正式运营。最高运营速度达到394公里/小时,武汉到广州3个小时便可到达。武汉至广州间旅行时间由原来的约11小时缩短到3小时左右,武汉到长沙直达仅需1个小时,长沙到广州直达仅需2小时。武广高铁成为世界上运营速度最快、密度最大的高速铁路。而且还是中国第一条350公里/小时的高铁线路。

    此后,随着秦沈客运专线、京津城际铁路、石太客运专线、武广客运专线、郑西客运专线、沪宁城际铁路、沪杭城际铁路的开通,大量时速200、250、300、350公里/小时的动车组已经上线运行,标志着中国铁路既有线提速水平已跻身世界先进行列^ [4][5]() 。

    由“中国制造”向“中国创造”的转变

    2012年11月8日,中共十八大在北京召开。这次大会,是党在全面建设小康社会的关键时期和深化改革开放、加快转变经济发展方式的攻坚时期召开的一次十分重要的会议。这为中国铁路建设由“中国制造”向“中国创造”的转变指明了方向。

    2012年12月1日,世界上第一条地处高寒地区的高铁线路——哈大高铁正式通车运营。921公里的哈大高铁,将东北三省主要城市连为一线,从哈尔滨到大连冬季只需4小时40分钟。高寒地区冬季时速200公里的“中国速度”,吸引了全世界高度关注的目光。

    2013年3月起,根据第十二届全国人大第一次会议审议的《国务院关于提请审议国务院机构改革和职能转变方案》的议案,将原铁道部拟定铁路发展规划和政策的行政职责划入交通运输部;组建国家铁路局,由交通运输部管理,承担铁道部的其他行政职责;组建中国铁路总公司,承担铁道部的企业职责,共同管理中国铁路。至此,顺利完成了铁路政企分开的改革。

    2014年4月2日6时31分,一列由4台电力机车牵引、编组320辆、总长3971米、满载3万吨煤炭的试验列车,由北同蒲线袁树林站始发,经过12小时25分、738.4公里的运行,于当日18时56分安全顺利到达终点站大秦线柳村南站,3万吨重载列车运行试验取得圆满成功,实现了我国铁路重载列车牵引重量从2万吨到3万吨的跨跃,使我国成为世界上仅有几个掌握3万吨铁路重载技术的国家之一。这是中国铁路重载技术创新的重大突破,是中国铁路重载运输发展的新的里程碑。不仅对提高铁路运输能力、满足日益增长的铁路运输需求具有重要现实意义,而且推动了中国铁路重载技术的创新发展,为促进铁路可持续发展提供了有力的技术支撑。

    2014年11月25日,装载“中国创造”牵引电传动系统和网络控制系统的中国北车CRH5A型动车组进入“5000公里正线试验”的最后阶段。这是国内首列实现牵引电传动系统和网络控制系统完全自主创新的高速动车组,标志着中国高铁列车核心技术正实现由“国产化”向“自主化”的转变,中国高铁列车实现由“中国制造”向“中国创造”的跨越。将大力提升中国高铁列车的核心创造能力,夯实中国高铁走出去的底气。

    据统计,截至2015年12月,中国铁路营业总里程达12.1万公里,规模居亚洲第一位、世界第二位;其中高速铁路1.9万公里,居世界第一位,全国铁路复线率和电气化率分别达到53.5%和61.8%。以高速铁路为主骨架的快速铁路网将基本建成,总规模达4万公里以上。

    从2016年1月1日起,根据国家发改委发布的《关于改革完善高铁动车组旅客票价政策的通知》,放开高铁动车票价,改由铁路总公司自行定价,并给予根据市场竞争状况和客流分布等因素实行一定的折扣票价的权力。这意味着市场化转型的铁路企业拿到了“高铁定价权”。

    2016年,国家发展改革委、交通运输部、中国铁路总公司联合印发《中长期铁路网规划》,构筑了“八纵八横”高速铁路通道。^ [5-6][6]()

    2017年11月15日,中国铁路总公司所属18个铁路局均已完成公司制改革工商变更登记,并于19日正式挂牌,标志着铁路公司制改革取得重要成果,基本完成了市场化转型。

    2018年是贯彻落实党的十九大精神的开局之年,是决胜全面建成小康社会、实现“十三五”规划承上启下的关键一年,也是“交通强国、铁路先行”的起步年。这一年,铁路部门下调28条城际铁路部分动车组列车票价,折扣达到20%,列车票价向市场化机制迈进了一大步。

    2018年12月6日,国家市场监督管理总局网站公示披露,“中国国家铁路集团有限公司”企业名称已获核准;2019年6月18日,中国国家铁路集团有限公司正式挂牌成立。这为中国铁路实现从传统运输生产型企业向现代运输经营型企业转型发展迈出重要一步。

    来自交通运输部的统计数据显示,2018年末,全国铁路营业里程达到13.1万公里,全国铁路路网密度136.0公里/万平方公里;全年完成旅客发送量33.75亿人,其中动车组发送旅客20.05亿人;全国铁路完成货物总发送量40.26亿吨,货物总周转量28820.55亿吨公里;全年完成铁路固定资产投资8028亿元。与此同时,中国高铁“走出去”战略取得显著成效^ [4][7]() 。

    “走出去”战略向世界展示“中国名片”

    2009年,中国政府正式提出高铁“走出去”战略,并且初步设定了三大战略方向:通过俄罗斯进入欧洲的欧亚高铁;从乌鲁木齐出发,经过中亚最终到达德国的中亚线;还有从昆明出发,连接东南亚国家,一直抵达新加坡的泛亚铁路网

    事实上,中国铁路“走出去”探索可以上溯至上世纪70年代的坦赞铁路。该铁路是迄今中国最大的援外成套项目之一,由中国、坦桑尼亚和赞比亚3国合作修建;1970年10月动工兴建,1976年7月全线完成;坦赞铁路东起坦桑尼亚的达累斯萨拉姆,西至赞比亚中部的卡皮里姆波希,全长1860.5公里,是一条贯通东非和中南非的交通大干线,更是东非交通的大动脉,为赞比亚、马拉维等内陆国家提供了新的出海通道,成为中非友谊的象征。

    然后便是引起全球轰动的中欧班列。首列中欧班列(重庆-杜伊斯堡)于2011年3月19日成功开行。中欧班列从重庆团结村站始发,由新疆维吾尔自治区阿拉山口出境,途经哈萨克、俄罗斯、白俄罗斯、波兰至德国杜伊斯堡站,全程约11000公里,运行时间约15天。此后,成都、郑州、武汉、苏州、广州等城市也陆续开行了去往欧洲的集装箱班列。据国家海关统计,截至2018年6月底,中欧班列累计开行量已突破9000列,运送货物近80万标箱,国内开行城市48个,到达欧洲14个国家42个城市,运输网络覆盖亚欧大陆的主要区域。

    2014年8月,泰国执政当局批准了连接中国云南省的铁路项目。该项目总成本约为7414亿泰铢(约合人民币1430亿元),计划建设2条高速铁路,分别是廊开府-马塔府(总长737公里,计划投资3925亿泰铢),清孔-帕栖(总长655公里,计划投资3488亿泰铢)的铁路线路。

    此后,随着雅万高铁、中老高铁、匈塞铁路等海外工程的落地实施;马新高铁、中泰高铁等海外项目的陆续推进,中国高铁“走出去”战略实现了预期目标。据中国铁路建设机构统计,截至2017年底,全球83%拥有铁路的国家和地区都在使用中国的铁路产品。

    2018年1月1日,埃塞俄比亚至吉布提的标准轨距铁路——亚吉铁路商业运营列车正式开始运营。该铁路是东非第一条电气化铁路,全部采用中国标准和中国装备建设而成,全长751.7公里,设计时速120公里,总投资约40亿美元,是中国企业在海外建设的第一条全产业链“走出去”的铁路。建成后,吉布提至亚的斯亚贝巴的运输时间将从公路运输的7天降至10个小时。

    2018年5月15日,印度尼西亚雅万高铁项目正式展开主体工程施工。雅万高铁是“一带一路”倡议下中国与印尼两国共同推动建设的标志性工程,也是中国高铁“走出去”的第一单。雅万高铁全长142.3公里,连接印尼首都雅加达与万隆,建成后两地车程将由未建成时的3个多小时缩短至40分钟,将有效缓解印尼当地交通压力、优化当地投资环境。

    来自中国铁路运输部门的信息显示,截至2018年,中国高铁“海外版图”不仅扩展至亚、欧、非、美等五大洲数十个国家,更被外国留学生视为最想带回家的“中国特产”^ [4][8]() 。

    2019年4月9日至13日,第22届莫斯塔尔博览会在波黑莫斯塔尔市国际展览中心举行,中国铁路首次参展,复兴号、中欧班列在展会上精彩亮相,中国“国家名片”吸引大量观众驻足,受到广泛赞誉。^ [7][9]()

    中国铁路成功实现3万吨重载列车试验运行

    从中国铁路总公司获悉,由中国铁路总公司在大秦线组织实施的3万吨重载列车运行试验取得圆满成功。^ [36][10]()

    2014年4月2日6时31分,一列由4台电力机车牵引、编组320辆、总长3971米、满载3万吨煤炭的试验列车,由北同蒲线袁树林站始发,经过12小时25分、738.4公里的运行,于当日18时56分安全顺利到达终点站大秦线柳村南站,3万吨重载列车运行试验取得圆满成功,实现了我国铁路重载列车牵引重量从2万吨到3万吨的跨跃,使我国成为世界上仅有几个掌握3万吨铁路重载技术的国家之一。这是我国铁路重载技术创新的重大突破,是我国铁路重载运输发展的新的里程碑。

    据了解,这次3万吨重载列车的试验运行是在多年技术研究和重载运输实践的基础上进行的,充分利用既有设备条件,首次采用机车同步操纵系统试验开行3万吨组合列车,系统测试3万吨列车的综合性能,监测试验列车运行的安全性,评估列车运行品质,达到了预期目标,创造了我国铁路重载列车牵引重量新纪录。

    这次试验的成功实施,不仅对提高铁路运输能力、满足日益增长的铁路运输需求具有重要现实意义,而且推动了我国铁路重载技术的创新发展,为促进铁路可持续发展提供了有力的技术支撑。

    中国铁路启动客运提质计划

    中国铁路总公司将用三年左右的时间,实施铁路客运提质计划。其中2018年将以“一日一图、电子客票、常旅客服务、畅通工程、旅客信用体系、客票收益管理、厕所革命、双网生活、客运生产指挥体系”九大重点工程为载体,稳步推进各项工作。

    据介绍,该计划将以深化供给侧结构性改革为主线,打好全面提升客运供给质量攻坚战,力争到2020年中国铁路实现世界一流的现代化客运服务;以实施复兴号品牌战略为带动,建成一批具有广泛影响力的铁路客运服务品牌和标杆性的精品站区,为更好服务经济社会发展、满足人民日益增长的美好生活需要提供有力保障。^ [8][11]()

    新时代交通强国铁路先行规划纲要

    2020年8月13日,《新时代交通强国铁路先行规划纲要》发布,明确了中国铁路2035年及2050年的发展目标和主要任务。以“八纵八横”为主通道的高铁网和普速铁路网都将进一步优化和完善。纲要明确,到2035年,全国铁路网运营里程达到20万公里左右,其中高铁7万公里左右。20万人口以上城市实现铁路覆盖,50万人口以上城市高铁通达。纲要明确,未来将统筹推进高铁主通道及普速铁路通道建设,普速铁路基本覆盖县级以上行政区。到2050年,全面建成更高水平的现代化铁路强国,全面服务和保障社会主义现代化强国建设。^ [3][12]()

    运营历程

    2013年3月起,根据第十二届全国人民代表大会第一次会议审议的《国务院关于提请审议国务院机构改革和职能转变方案》的议案,将原铁道部拟定铁路发展规划和政策的行政职责划入交通运输部;组建国家铁路局,由交通运输部管理,承担铁道部的其他行政职责;组建中国铁路总公司,承担铁道部的企业职责,共同管理中国铁路。^ [9][13]()

    2015年,全国铁路完成固定资产投资8238亿元,投产新线9531公里,其中高铁3306公里。中国铁路总公司总经理盛光祖表示,“十二五”期间,全国铁路固定资产投资完成3.58万亿元、新线投产3.05万公里,较“十一五”期间分别增长47.3%、109%,是历史上投资完成和投产新线最多的五年。到“十二五”末,全国铁路营业里程达到12.1万公里,其中高铁运营里程超过1.9万公里,位居世界第一。^ [10][14]()

    2016年5月中旬,铁路部门拟全面调整优化列运行图,在进一步发挥高铁优势,提高高铁覆盖率的同时,大量增开中小城市间、中西部及边远地区始发终到的普速列车,推出更多方便快捷的客运产品,进一步增加中小城市和中西部地区的铁路客运有效供给,便利沿线群众出行。^ [11][15]()

    中国铁路总公司发布2015年前四月国家铁路主要指标完成情况。2015年1至4月,我国铁路固定资产投资完成1321亿元,同比增长22%。其中,铁路建设投资完成1172亿元,同比增长20%;国家铁路机车车辆购置149亿元,同比增长45%。此外,2015年第一季度受宏观经济的影响,全国铁路货运发送量完成8.7亿吨,同比下降约9%。但大量新线的开通推动了铁路客运量增长,2015年第一季度,全国铁路旅客发送量完成59077万人次,同比增长8.8%。截至2015年3月31日,中国铁路总公司的负债增至3.747万亿元,较2014年底再增717亿元,负债率为66.2%。^ [12][16]()

    2018年1~8月份,全国铁路完成投资4612亿元,完成进度同比提高6.2%,其中国家铁路完成投资4385亿元,为完成全年投资任务奠定了坚实基础。^ [13][17]()

    该负责人还表示,2018年以来铁路总公司加大基础设施领域补短板的力度,持续加大中西部铁路建设。1~8月份,中西部地区累积完成铁路基建投资2310亿元,占全国铁路基建投资的68.1%。2018年中西部地区计划安排新开工项目16项,其中12个项目已批复可研。^ [13][18]()

    2018年,全国铁路发送旅客33.7亿人 同比增长9.4%。^ [14][19]()

    2019年1至11月份,国家铁路完成货物运输31.15亿吨,同比2018年增加了1.98亿吨、增长了6.8%。^ [15][20]()

    2020年6月20日,电子客票将在全国普速铁路推广实施,覆盖1300多个普速铁路车站。^ [16][21]()

    2021年底,全国铁路营业里程突破15万公里,其中高铁超过4万公里。完成固定资产投资7489亿元,其中国家铁路完成6616亿元;投产新线4208公里,其中高铁2168公里,全面完成了年度铁路建设任务^ [26][22]() 。

    2022年1月10日零时起,全国铁路将实行新的列车运行图,增开旅客列车96对,增开货物列车65对。调图后,全国铁路客货列车开行总量分别达到5231对、10606对。新图旅客列车车票于12月27日起陆续发售^ [23][23]() 。

    2022年1月4日,召开国铁集团工作会议,截至2021年底,全国铁路营业里程突破15万公里,其中高铁超过4万公里。^ [26][24]()

    2022年1月4日,据国铁集团数据显示,至2021年底,全国铁路配备复兴号系列动车组达1191组,累计安全运行13.58亿公里,运送旅客13.7亿人次。^ [27][25]()

    2022年1月5日讯,据厦门广电网报道,厦门火车站统筹考虑季节性客流变化、运输需求调整、常态化疫情防控等因素,优化列车开行结构,新增日常线列车2对、高峰线列车4对,周末线改日常线3对,变更运行区段9对,变更经由5对,变更始发终到站0.5对,停运日常线列车4对。^ [28][26]()

    截至2022年9 月底,全国铁路营业里程达到 15.3 万公里,其中高铁 4.1 万公里,铁路覆盖全国 99% 的 20 万人口以上城市。^ [38][27]()

    历次提速

    参见: 中国铁路大提速

    1997年4月1日,中国铁路第一次大提速

    1998年10月1日,中国铁路第二次大提速

    2000年10月21日,中国铁路第三次大提速

    2001年11月21日,中国铁路第四次大提速

    2004年4月18日,中国铁路第五次大提速

    2007年4月18日,中国铁路第六次大提速

    1997年4月1日零时,中国铁路第一次大面积提速调图全面实施,拉开了铁路提速的序幕。这次提速调图,提速列车最高运行时速达到了140公里;全国铁路旅客列车旅行速度由1993年的时速48.1公里,提高到时速54.9公里;首次开行了快速列车和夕发朝至列车。

    1998年10月1日零时,第二次大面积提速调图开始实施。这次提速调图,快速列车最高运行速度达到了时速160公里;全国铁路旅客列车平均旅行速度达到时速55.2公里,直通快速、特快客车平均时速达到71.6公里;首次开行了行包专列和旅游热线直达列车。

    2000年10月21日零时,第三次大面积提速在陇海、兰新、京九、浙赣线顺利实施,初步形成了覆盖全国主要地区的“四纵两横”提速网络。全国铁路旅客列车平均时速达到60.3公里。新的列车车次将传统的快速列车、特快列车、直快列车、普通客车、混合列车、市郊列车、军运人员列车七个等级调整为三个等级,即特快旅客列车快速旅客列车普通旅客列车

    2001年10月21日零时,第四次大面积提速调图开始实施,铁路提速延展里程达到13000公里,使提速网络覆盖全国大部分省区市。这次提速调图,全国铁路旅客列车平均旅行速度达到时速61.6公里;进一步增开了特快列车,树立了夕发朝至列车等客货运输品牌的形象。

    2004年4月18日零时,第五次大面积提速调图开始实施。这次提速调图,几大干线的部分地段线路基础达到时速200公里的要求;提速网络总里程16500多公里;全国铁路旅客列车平均旅行速度达到时速65.7公里。

    2007年4月18日零时实施的第六次大提速,是在京哈、京沪等既有干线实施的时速200公里的提速,部分有条件区段列车运行速度可达250公里,时速200公里提速线路延展里程一次达到6003公里,标志中国铁路既有线提速跻身世界先进铁路行列。

    #include<assert.h>    //设定插入点
    #include<ctype.h>    //字符处理
    #include<errno.h>    //定义错误码
    #include<float.h>    //浮点数处理
    #include<fstream.h>   //文件输入/输出
    #include<iomanip.h>   //参数化输入/输出
    #include<iostream.h>   //数据流输入/输出
    #include<limits.h>    //定义各种数据类型最值常量
    #include<locale.h>    //定义本地化函数
    #include<math.h>     //定义数学函数
    #include<stdio.h>    //定义输入/输出函数
    #include<stdlib.h>    //定义杂项函数及内存分配函数
    #include<string.h>    //字符串处理
    #include<strstrea.h>   //基于数组的输入/输出
    #include<time.h>     //定义关于时间的函数
    #include<wchar.h>    //宽字符处理及输入/输出
    #include<wctype.h>    //宽字符分类
    

    Copy

    //

    标准 C++ (同上的不再注释)

    #include   //STL通用算法
    #include     //STL位集容器
    #include
    #include
    #include
    #include
    #include    //复数类
    #include
    #include
    #include
    #include
    #include     //STL双端队列容器
    #include   //异常处理类
    #include
    #include   //STL定义运算函数(代替运算符)
    #include
    #include      //STL线性列表容器
    #include      //STL映射容器
    #include
    #include      //基本输入/输出支持
    #include     //输入/输出系统使用的前置声明
    #include
    #include    //基本输入流
    #include    //基本输出流
    #include     //STL队列容器
    #include      //STL集合容器
    #include    //基于字符串的流
    #include     //STL堆栈容器    
    #include   //标准异常类
    #include   //底层输入/输出支持
    #include     //字符串类
    #include    //STL通用模板类
    #include     //STL动态数组容器
    #include
    #include
    

    Copy

    using namespace std;

    //

    C99 增加

    #include<complex.h>  //复数处理
    #include<fenv.h>    //浮点环境
    #include<inttypes.h>  //整数格式转换
    #include<stdbool.h>  //布尔环境
    #include<stdint.h>   //整型环境
    #include<tgmath.h>   //通用类型数学宏
    

    Copy

    C头文件大全

    分类函数,所在函数库为ctype.h
    
    intisalpha(intch)若ch是字母(‘A’-‘Z’,‘a’-‘z’)返回非0值,否则返回0
    
    intisalnum(intch)若ch是字母(‘A’-‘Z’,‘a’-‘z’)或数字(‘0’-‘9’)返回非0值,否则返回0
    
    intisascii(intch)若ch是字符(ASCII码中的0-127)返回非0值,否则返回0
    
    intiscntrl(intch)若ch是作废字符(0x7F)或普通控制字符(0x00-0x1F)返回非0值,否则返回0
    
    intisdigit(intch)若ch是数字(‘0’-‘9’)返回非0值,否则返回0
    
    intisgraph(intch)若ch是可打印字符(不含空格)(0x21-0x7E)返回非0值,否则返回0
    
    intislower(intch)若ch是小写字母(‘a’-‘z’)返回非0值,否则返回0
    
    intisprint(intch)若ch是可打印字符(含空格)(0x20-0x7E)返回非0值,否则返回0
    
    intispunct(intch)若ch是标点字符(0x00-0x1F)返回非0值,否则返回0
    
    intisspace(intch)若ch是空格(’’),水平制表符(’\t’),回车符(’\r’),走纸换行(’\f’),垂直制表符(’\v’),换行符(’\n’)返回非0值,否则返回0
    
    intisupper(intch)若ch是大写字母(‘A’-‘Z’)返回非0值,否则返回0
    
    intisxdigit(intch)若ch是16进制数(‘0’-‘9’,‘A’-‘F’,‘a’-‘f’)返回非0值,否则返回0
    
    inttolower(intch)若ch是大写字母(‘A’-‘Z’)返回相应的小写字母(‘a’-‘z’)
    
    inttoupper(intch)若ch是小写字母(‘a’-‘z’)返回相应的大写字母(‘A’-‘Z’)
    
    数学函数,所在函数库为math.h、stdlib.h、string.h、float.h
    
    intabs(inti)返回整型参数i的绝对值
    
    doublecabs(structcomplexznum)返回复数znum的绝对值
    
    doublefabs(doublex)返回双精度参数x的绝对值
    
    longlabs(longn)返回长整型参数n的绝对值
    
    doubleexp(doublex)返回指数函数ex的值
    
    doublefrexp(doublevalue,inteptr)返回value=x2n中x的值,n存贮在eptr中
    
    doubleldexp(doublevalue,intexp);返回value*2exp的值
    
    doublelog(doublex)返回logex的值
    
    doublelog10(doublex)返回log10x的值
    
    doublepow(doublex,doubley)返回xy的值
    
    doublepow10(intp)返回10p的值
    
    doublesqrt(doublex)返回+√x的值
    
    doubleacos(doublex)返回x的反余弦cos-1(x)值,x为弧度
    
    doubleasin(doublex)返回x的反正弦sin-1(x)值,x为弧度
    
    doubleatan(doublex)返回x的反正切tan-1(x)值,x为弧度
    
    doubleatan2(doubley,doublex)返回y/x的反正切tan-1(x)值,y的x为弧度
    
    doublecos(doublex)返回x的余弦cos(x)值,x为弧度
    
    doublesin(doublex)返回x的正弦sin(x)值,x为弧度
    
    doubletan(doublex)返回x的正切tan(x)值,x为弧度
    
    doublecosh(doublex)返回x的双曲余弦cosh(x)值,x为弧度
    
    doublesinh(doublex)返回x的双曲正弦sinh(x)值,x为弧度
    
    doubletanh(doublex)返回x的双曲正切tanh(x)值,x为弧度
    
    doublehypot(doublex,doubley)返回直角三角形斜边的长度(z),x和y为直角边的长度,z2=x2+y2
    
    doubleceil(doublex)返回不小于x的最小整数
    
    doublefloor(doublex)返回不大于x的最大整数
    
    voidsrand(unsignedseed)初始化随机数发生器
    
    intrand()产生一个随机数并返回这个数
    
    doublepoly(doublex,intn,doublec[])从参数产生一个多项式
    
    doublemodf(doublevalue,double*iptr)将双精度数value分解成尾数和阶
    
    doublefmod(doublex,doubley)返回x/y的余数
    
    doublefrexp(doublevalue,int*eptr)将双精度数value分成尾数和阶
    
    doubleatof(char*nptr)将字符串nptr转换成浮点数并返回这个浮点数
    
    doubleatoi(char*nptr)将字符串nptr转换成整数并返回这个整数
    
    doubleatol(char*nptr)将字符串nptr转换成长整数并返回这个整数
    
    char*ecvt(doublevalue,intndigit,int*decpt,int*sign)将浮点数value转换成字符串并返回该字符串
    
    char*fcvt(doublevalue,intndigit,int*decpt,int*sign)将浮点数value转换成字符串并返回该字符串
    
    char*gcvt(doublevalue,intndigit,char*buf)将数value转换成字符串并存于buf中,并返回buf的指针
    
    charultoa(unsignedlongvalue,charstring,intradix)将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数
    
    charltoa(longvalue,charstring,intradix)将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数
    
    charitoa(intvalue,charstring,intradix)将整数value转换成字符串存入string,radix为转换时所用基数
    
    doubleatof(char*nptr)将字符串nptr转换成双精度数,并返回这个数,错误返回0
    
    intatoi(char*nptr)将字符串nptr转换成整型数,并返回这个数,错误返回0
    
    longatol(char*nptr)将字符串nptr转换成长整型数,并返回这个数,错误返回0
    
    doublestrtod(char*str,char**endptr)将字符串str转换成双精度数,并返回这个数,
    
    longstrtol(char*str,char**endptr,intbase)将字符串str转换成长整型数,并返回这个数,
    
    intmatherr(structexception*e)用户修改数学错误返回信息函数(没有必要使用)
    
    double_matherr(_mexcepwhy,charfun,doublearg1p,double*arg2p,doubleretval)用户修改数学错误返回信息函数(没有必要使用)
    
    unsignedint_clear87()清除浮点状态字并返回原来的浮点状态
    
    void_fpreset()重新初使化浮点数学程序包
    
    unsignedint_status87()返回浮点状态字
    
    目录函数,所在函数库为dir.h、dos.h
    
    intchdir(char*path)使指定的目录path(如:“C:\WPS”)变成当前的工作目录,成功返回0
    
    intfindfirst(char*pathname,structffblk*ffblk,intattrib)查找指定的文件,成功返回0
    

    Copy

    pathname为指定的目录名和文件名,如"C:\WPS\TXT"

        ffblk为指定的保存文件信息的一个结构,定义如下:
    1
    ┏━━━━━━━━━━━━━━━━━━┓
    
    ┃structffblk┃
    1
    ┃{┃
    
    ┃charff_reserved[21];┃
    
    ┃charff_attrib;┃
    
    ┃intff_ftime;┃
    
    ┃intff_fdate;┃
    
    ┃longff_fsize;┃
    
    ┃charff_name[13];┃
    ┃}┃
    
    ┗━━━━━━━━━━━━━━━━━━┛
    
    attrib为文件属性,由以下字符代表
    1
    ┏━━━━━━━━━┳━━━━━━━━┓
    
    ┃FA_RDONLY只读文件┃FA_LABEL卷标号┃
    
    ┃FA_HIDDEN隐藏文件┃FA_DIREC目录┃
    
    ┃FA_SYSTEM系统文件┃FA_ARCH档案┃
    
    ┗━━━━━━━━━┻━━━━━━━━┛
    
    例:
    
    structffblkff;
    1
    2
    3
    findfirst("*.wps",&ff,FA_RDONLY);
    
    intfindnext(structffblk*ffblk)取匹配finddirst的文件,成功返回0
    
    voidfumerge(char*path,chardrive,chardir,char*name,char*ext)
    
    此函数通过盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),
    
    文件名name(TC、WPS等),扩展名ext(.EXE、.COM等)组成一个文件名
    
    存与path中.
    intfnsplit(charpath,chardrive,char*dir,char*name,char*ext)
    
    此函数将文件名path分解成盘符drive(C:、A:等),路径dir(\TC、\BC\LIB等),
    
    文件名name(TC、WPS等),扩展名ext(.EXE、.COM等),并分别存入相应的变量中.
    intgetcurdir(intdrive,char*direc)此函数返回指定驱动器的当前工作目录名称
    
    drive指定的驱动器(0=当前,1=A,2=B,3=C等)
    
    direc保存指定驱动器当前工作路径的变量成功返回0
    char*getcwd(char*buf,iintn)此函数取当前工作目录并存入buf中,直到n个字
    
    节长为为止.错误返回NULL
    intgetdisk()取当前正在使用的驱动器,返回一个整数(0=A,1=B,2=C等)
    
    intsetdisk(intdrive)设置要使用的驱动器drive(0=A,1=B,2=C等),
    
    返回可使用驱动器总数
    intmkdir(char*pathname)建立一个新的目录pathname,成功返回0
    
    intrmdir(char*pathname)删除一个目录pathname,成功返回0
    
    char*mktemp(char*template)构造一个当前目录上没有的文件名并存于template中
    
    char*searchpath(char*pathname)利用MSDOS找出文件filename所在路径,
    
    ,此函数使用DOS的PATH变量,未找到文件返回NULL
    进程函数,所在函数库为stdlib.h、process.h
    
    voidabort()此函数通过调用具有出口代码3的_exit写一个终止信息于stderr,
    
    并异常终止程序。无返回值
    1
    intexec…装入和运行其它程序
    
    intexecl(char*pathname,char*arg0,char*arg1,…,char*argn,NULL)
    
    intexecle(char*pathname,char*arg0,char*arg1,…,char*argn,NULL,char*envp[])
    
    intexeclp(char*pathname,char*arg0,char*arg1,…,NULL)
    
    intexeclpe(char*pathname,char*arg0,char*arg1,…,NULL,char*envp[])
    
    intexecv(char*pathname,char*argv[])
    
    intexecve(char*pathname,char*argv[],char*envp[])
    
    intexecvp(char*pathname,char*argv[])
    
    intexecvpe(char*pathname,char*argv[],char*envp[])
    
    exec函数族装入并运行程序pathname,并将参数
    
    arg0(arg1,arg2,argv[],envp[])传递给子程序,出错返回-1
    
    在exec函数族中,后缀l、v、p、e添加到exec后,
    
    所指定的函数将具有某种操作能力
    
    有后缀p时,函数可以利用DOS的PATH变量查找子程序文件。
    
    l时,函数中被传递的参数个数固定。
    
    v时,函数中被传递的参数个数不固定。
    
    e时,函数传递指定参数envp,允许改变子进程的环境,
    
    无后缀e时,子进程使用当前程序的环境.
    void_exit(intstatus)终止当前程序,但不清理现场
    
    voidexit(intstatus)终止当前程序,关闭所有文件,写缓冲区的输出(等待输出),
    
    并调用任何寄存器的"出口函数",无返回值
    1
    intspawn…运行子程序
    
    intspawnl(intmode,char*pathname,chararg0,chararg1,…,char*argn,NULL)
    
    intspawnle(intmode,char*pathname,char*arg0,chararg1,…,charargn,NULL,char*envp[])
    
    intspawnlp(intmode,char*pathname,char*arg0,chararg1,…,charargn,NULL)
    
    intspawnlpe(intmode,char*pathname,char*arg0,chararg1,…,charargn,NULL,char*envp[])
    
    intspawnv(intmode,char*pathname,char*argv[])
    
    intspawnve(intmode,char*pathname,char*argv[],char*envp[])
    
    intspawnvp(intmode,char*pathname,char*argv[])
    
    intspawnvpe(intmode,char*pathname,char*argv[],char*envp[])
    
    spawn函数族在mode模式下运行子程序pathname,并将参数
    
    arg0(arg1,arg2,argv[],envp[])传递给子程序.出错返回-1
    
    mode为运行模式
    
    mode为P_WAIT表示在子程序运行完后返回本程序
    
    P_NOWAIT表示在子程序运行时同时运行本程序(不可用)
    
    P_OVERLAY表示在本程序退出后运行子程序
    
    在spawn函数族中,后缀l、v、p、e添加到spawn后,
    
    所指定的函数将具有某种操作能力
    
    有后缀p时,函数利用DOS的PATH查找子程序文件
    
    l时,函数传递的参数个数固定.
    
    v时,函数传递的参数个数不固定.
    
    e时,指定参数envp可以传递给子程序,允许改变子程序运行环境.
    
    当无后缀e时,子程序使用本程序的环境.
    intsystem(char*command)将MSDOS命令command传递给DOS执行
    
    转换子程序,函数库为math.h、stdlib.h、ctype.h、float.h
    
    char*ecvt(doublevalue,intndigit,int*decpt,int*sign)
    
    将浮点数value转换成字符串并返回该字符串
    1
    char*fcvt(doublevalue,intndigit,int*decpt,int*sign)
    
    将浮点数value转换成字符串并返回该字符串
    1
    char*gcvt(doublevalue,intndigit,char*buf)
    
    将数value转换成字符串并存于buf中,并返回buf的指针
    1
    charultoa(unsignedlongvalue,charstring,intradix)
    
    将无符号整型数value转换成字符串并返回该字符串,radix为转换时所用基数
    1
    charltoa(longvalue,charstring,intradix)
    
    将长整型数value转换成字符串并返回该字符串,radix为转换时所用基数
    1
    charitoa(intvalue,charstring,intradix)
    
    将整数value转换成字符串存入string,radix为转换时所用基数
    1
    doubleatof(char*nptr)将字符串nptr转换成双精度数,并返回这个数,错误返回0
    
    intatoi(char*nptr)将字符串nptr转换成整型数,并返回这个数,错误返回0
    
    longatol(char*nptr)将字符串nptr转换成长整型数,并返回这个数,错误返回0
    
    doublestrtod(char*str,char**endptr)将字符串str转换成双精度数,并返回这个数,
    
    longstrtol(char*str,char**endptr,intbase)将字符串str转换成长整型数,
    
    并返回这个数,
    1
    inttoascii(intc)返回c相应的ASCII
    
    inttolower(intch)若ch是大写字母(‘A’-‘Z’)返回相应的小写字母(‘a’-‘z’)
    
    int_tolower(intch)返回ch相应的小写字母(‘a’-‘z’)
    
    inttoupper(intch)若ch是小写字母(‘a’-‘z’)返回相应的大写字母(‘A’-‘Z’)
    
    int_toupper(intch)返回ch相应的大写字母(‘A’-‘Z’)
    
    诊断函数,所在函数库为assert.h、math.h
    
    voidassert(inttest)一个扩展成if语句那样的宏,如果test测试失败,
    
    就显示一个信息并异常终止程序,无返回值
    1
    voidperror(char*string)本函数将显示最近一次的错误信息,格式如下:
    
    字符串string:错误信息
    1
    char*strerror(char*str)本函数返回最近一次的错误信息,格式如下:
    
    字符串str:错误信息
    1
    intmatherr(structexception*e)
    
    用户修改数学错误返回信息函数(没有必要使用)
    1
    double_matherr(_mexcepwhy,char*fun,double*arg1p,
    
    double*arg2p,doubleretval)
    
    用户修改数学错误返回信息函数(没有必要使用)
    1
    2
    3
    输入输出子程序,函数库为io.h、conio.h、stat.h、dos.h、stdio.h、signal.h
    
    intkbhit()本函数返回最近所敲的按键
    
    intfgetchar()从控制台(键盘)读一个字符,显示在屏幕上
    
    intgetch()从控制台(键盘)读一个字符,不显示在屏幕上
    
    intputch()向控制台(键盘)写一个字符
    
    intgetchar()从控制台(键盘)读一个字符,显示在屏幕上
    
    intputchar()向控制台(键盘)写一个字符
    
    intgetche()从控制台(键盘)读一个字符,显示在屏幕上
    
    intungetch(intc)把字符c退回给控制台(键盘)
    
    char*cgets(char*string)从控制台(键盘)读入字符串存于string中
    
    intscanf(char*format[,argument…])从控制台读入一个字符串,分别对各个参数进行
    
    赋值,使用BIOS进行输出
    1
    intvscanf(char*format,Valistparam)从控制台读入一个字符串,分别对各个参数进行
    
    赋值,使用BIOS进行输出,参数从Valistparam中取得
    1
    intcscanf(char*format[,argument…])从控制台读入一个字符串,分别对各个参数进行
    
    赋值,直接对控制台作操作,比如显示器在显示时字符时即为直接写频方式显示
    1
    intsscanf(charstring,charformat[,argument,…])通过字符串string,分别对各个
    
    参数进行赋值
    1
    intvsscanf(char*string,char*format,Vlistparam)通过字符串string,分别对各个
    
    参数进行赋值,参数从Vlistparam中取得
    1
    intputs(char*string)发关一个字符串string给控制台(显示器),
    
    使用BIOS进行输出
    1
    voidcputs(char*string)发送一个字符串string给控制台(显示器),
    
    直接对控制台作操作,比如显示器即为直接写频方式显示
    1
    intprintf(char*format[,argument,…])发送格式化字符串输出给控制台(显示器)
    
    使用BIOS进行输出
    1
    intvprintf(char*format,Valistparam)发送格式化字符串输出给控制台(显示器)
    
    使用BIOS进行输出,参数从Valistparam中取得
    1
    intcprintf(char*format[,argument,…])发送格式化字符串输出给控制台(显示器),
    
    直接对控制台作操作,比如显示器即为直接写频方式显示
    1
    intvcprintf(char*format,Valistparam)发送格式化字符串输出给控制台(显示器),
    
    直接对控制台作操作,比如显示器即为直接写频方式显示,
    
    参数从Valistparam中取得
    intsprintf(char*string,char*format[,argument,…])
    
    将字符串string的内容重新写为格式化后的字符串
    1
    intvsprintf(char*string,char*format,Valistparam)
    
    将字符串string的内容重新写为格式化后的字符串,参数从Valistparam中取得
    1
    intrename(char*oldname,char*newname)将文件oldname的名称改为newname
    
    intioctl(inthandle,intcmd[,int*argdx,intargcx])
    
    本函数是用来控制输入/输出设备的,请见下表:
    
    ┌───┬────────────────────────────┐
    
    │cmd值│功能│
    
    ├───┼────────────────────────────┤
    
    │0│取出设备信息│
    
    │1│设置设备信息│
    
    │2│把argcx字节读入由argdx所指的地址│
    
    │3│在argdx所指的地址写argcx字节│
    
    │4│除把handle当作设备号(0=当前,1=A,等)之外,均和cmd=2时一样│
    
    │5│除把handle当作设备号(0=当前,1=A,等)之外,均和cmd=3时一样│
    
    │6│取输入状态│
    
    │7│取输出状态│
    
    │8│测试可换性;只对于DOS3.x│
    
    │11│置分享冲突的重算计数;只对DOS3.x│
    
    └───┴────────────────────────────┘
    

    Copy

    int (*ssignal(intsig,int(*action)())()执行软件信号(没必要使用)

    int gsignal(intsig) 执行软件信号(没必要使用)

    int _open(char *pathname,intaccess)为读或写打开一个文件,

    按后按access来确定是读文件还是写文件,access值见下表

    ┌──────┬────────────────────┐

    │access值 │意义 │

    ├──────┼────────────────────┤

    │O_RDONLY │读文件 │

    │O_WRONLY │写文件 │

    │O_RDWR │即读也写 │

    │O_NOINHERIT│若文件没有传递给子程序,则被包含 │

    │O_DENYALL │只允许当前处理必须存取的文件 │

    │O_DENYWRITE│只允许从任何其它打开的文件读 │

    │O_DENYREAD │只允许从任何其它打开的文件写 │

    │O_DENYNONE │允许其它共享打开的文件 │

    └──────┴────────────────────┘

    int open(char *pathname,intaccess[,int permiss])为读或写打开一个文件,

    按后按access来确定是读文件还是写文件,access值见下表

    ┌────┬────────────────────┐

    │access值│意义 │

    ├────┼────────────────────┤

    │O_RDONLY│读文件 │

    │O_WRONLY│写文件 │

    │O_RDWR │即读也写 │

    │O_NDELAY│没有使用;对UNIX系统兼容 │

    │O_APPEND│即读也写,但每次写总是在文件尾添加 │

    │O_CREAT │若文件存在,此标志无用;若不存在,建新文件 │

    │O_TRUNC│若文件存在,则长度被截为0,属性不变 │

    │O_EXCL │未用;对UNIX系统兼容 │

    │O_BINARY│此标志可显示地给出以二进制方式打开文件 │

    │O_TEXT │此标志可用于显示地给出以文本方式打开文件│

    └────┴────────────────────┘

    permiss为文件属性,可为以下值:

    S_IWRITE允许写  S_IREAD允许读 S_IREAD|S_IWRITE允许读、写
    

    Copy

    int creat(char *filename,intpermiss) 建立一个新文件filename,并设定

    读写性。permiss为文件读写性,可以为以下值

    S_IWRITE允许写 S_IREAD允许读 S_IREAD|S_IWRITE允许读、写 int _creat(char *filename,intattrib) 建立一个新文件filename,并设定文件

    属性。attrib为文件属性,可以为以下值

    FA_RDONLY只读 FA_HIDDEN隐藏 FA_SYSTEM系统 int creatnew(char*filenamt,int attrib) 建立一个新文件filename,并设定文件

    属性。attrib为文件属性,可以为以下值

    FA_RDONLY只读  FA_HIDDEN隐藏 FA_SYSTEM系统
    

    Copy

    int creattemp(char*filenamt,int attrib) 建立一个新文件filename,并设定文件

    属性。attrib为文件属性,可以为以下值

    FA_RDONLY只读  FA_HIDDEN隐藏 FA_SYSTEM系统
    

    Copy

    int read(int handle,void*buf,int nbyte)从文件号为handle的文件中读nbyte个字符

    存入buf中 int _read(int handle,void *buf,intnbyte)从文件号为handle的文件中读nbyte个字符

    存入buf中,直接调用MSDOS进行操作. int write(int handle,void*buf,int nbyte)将buf中的nbyte个字符写入文件号

    为handle的文件中 1 int _write(int handle,void *buf,intnbyte)将buf中的nbyte个字符写入文件号

    为handle的文件中 1 int dup(int handle)复制一个文件处理指针handle,返回这个指针

    int dup2(int handle,intnewhandle) 复制一个文件处理指针handle到newhandle

    int eof(int*handle)检查文件是否结束,结束返回1,否则返回0

    long filelength(int handle)返回文件长度,handle为文件号

    int setmode(inthandle,unsigned mode)本函数用来设定文件号为handle的文件的打

    开方式 1 int getftime(inthandle,struct ftime *ftime) 读取文件号为handle的文件的时间,

    并将文件时间存于ftime结构中,成功返回0,ftime结构如下:

    ┌─────────────────┐

    │structftime │

    │{ │

    │ unsigned ft_tsec:5; │

    │ unsigned ft_min:6; │

    │ unsigned ft_hour:5; │

    │ unsigned ft_day:5; │

    │ unsignedft_month:4; │

    │ unsigned ft_year:1; │

    │} │

    └─────────────────┘ int setftime(inthandle,struct ftime *ftime) 重写文件号为handle的文件时间,

    新时间在结构ftime中.成功返回0.结构ftime如下:

    ┌─────────────────┐

    │structftime │

    │{ │

    │ unsigned ft_tsec:5; │

    │ unsigned ft_min:6; │

    │ unsigned ft_hour:5; │

    │ unsigned ft_day:5; │

    │ unsignedft_month:4; │

    │ unsigned ft_year:1; │

    │} │

    └─────────────────┘ long lseek(int handle,long offset,intfromwhere) 本函数将文件号为handle的文件

    的指针移到fromwhere后的第offset个字节处.

    SEEK_SET 文件开关   SEEK_CUR当前位置   SEEK_END 文件尾
    

    Copy

    long tell(int handle)本函数返回文件号为handle的文件指针,以字节表示

    int isatty(inthandle)本函数用来取设备handle的类型

    int lock(int handle,longoffset,long length) 对文件共享作封锁

    int unlock(int handle,longoffset,long length) 打开对文件共享的封锁

    int close(int handle)关闭handle所表示的文件处理,handle是从_creat、creat、

    creatnew、creattemp、dup、dup2、_open、open中的一个处调用获得的文件处理

    成功返回0否则返回-1,可用于UNIX系统 int _close(int handle)关闭handle所表示的文件处理,handle是从_creat、creat、

    creatnew、creattemp、dup、dup2、_open、open中的一个处调用获得的文件处理

    成功返回0否则返回-1,只能用于MSDOS系统 FILE *fopen(char *filename,char *type)打开一个文件filename,打开方式为type,

    并返回这个文件指针,type可为以下字符串加上后缀

    ┌──┬────┬───────┬────────┐

    │type│读写性 │文本/2进制文件│建新/打开旧文件 │

    ├──┼────┼───────┼────────┤

    │r │读 │文本 │打开旧的文件 │

    │w │写 │文本 │建新文件 │

    │a │添加 │文本 │有就打开无则建新│

    │r+ │读/写 │不限制 │打开 │

    │w+ │读/写 │不限制 │建新文件 │

    │a+ │读/添加│不限制 │有就打开无则建新│

    └──┴────┴───────┴────────┘

    可加的后缀为t、b。加b表示文件以二进制形式进行操作,t没必要使用

    例: ┌──────────────────┐

     │#include<stdio.h>                  │
    
     │main()                             │
    
     │{                                  │
    
     │ FILE*fp;                         │
    
     │ fp=fopen("C:\\WPS\\WPS.EXE","r+b");│
    
     └──────────────────┘
    

    Copy

    FILE*fdopen(intahndle,char*type)
    
    FILE*freopen(char*filename,char*type,FILE*stream)
    
    intgetc(FILE*stream)从流stream中读一个字符,并返回这个字符
    
    intputc(intch,FILE*stream)向流stream写入一个字符ch
    
    intgetw(FILE*stream)从流stream读入一个整数,错误返回EOF
    
    intputw(intw,FILE*stream)向流stream写入一个整数
    
    intungetc(charc,FILE*stream)把字符c退回给流stream,下一次读进的字符将是c
    
    intfgetc(FILE*stream)从流stream处读一个字符,并返回这个字符
    
    intfputc(intch,FILE*stream)将字符ch写入流stream中
    
    char*fgets(char*string,intn,FILE*stream)从流stream中读n个字符存入string中
    
    intfputs(charstring,FILEstream)将字符串string写入流stream中
    
    intfread(void*ptr,intsize,intnitems,FILE*stream)从流stream中读入nitems
    
    个长度为size的字符串存入ptr中
    1
    intfwrite(void*ptr,intsize,intnitems,FILE*stream)向流stream中写入nitems
    
    个长度为size的字符串,字符串在ptr中
    1
    intfscanf(FILEstream,charformat[,argument,…])以格式化形式从流stream中
    
    读入一个字符串
    1
    intvfscanf(FILE*stream,char*format,Valistparam)以格式化形式从流stream中
    
    读入一个字符串,参数从Valistparam中取得
    1
    intfprintf(FILE*stream,char*format[,argument,…])以格式化形式将一个字符
    
    串写给指定的流stream
    1
    intvfprintf(FILE*stream,char*format,Valistparam)以格式化形式将一个字符
    
    串写给指定的流stream,参数从Valistparam中取得
    1
    intfseek(FILE*stream,longoffset,intfromwhere)函数把文件指针移到fromwhere
    
    所指位置的向后offset个字节处,fromwhere可以为以下值:
    
    SEEK_SET文件开关SEEK_CUR当前位置SEEK_END文件尾
    1
    2
    3
    longftell(FILE*stream)函数返回定位在stream中的当前文件指针位置,以字节表示
    
    intrewind(FILE*stream)将当前文件指针stream移到文件开头
    
    intfeof(FILE*stream)检测流stream上的文件指针是否在结束位置
    
    intfileno(FILE*stream)取流stream上的文件处理,并返回文件处理
    
    intferror(FILE*stream)检测流stream上是否有读写错误,如有错误就返回1
    
    voidclearerr(FILE*stream)清除流stream上的读写错误
    
    voidsetbuf(FILE*stream,char*buf)给流stream指定一个缓冲区buf
    
    voidsetvbuf(FILE*stream,char*buf,inttype,unsignedsize)
    
    给流stream指定一个缓冲区buf,大小为size,类型为type,type的值见下表
    
    ┌───┬───────────────────────────────┐
    
    │type值│意义│
    
    ├───┼───────────────────────────────┤
    
    │_IOFBF│文件是完全缓冲区,当缓冲区是空时,下一个输入操作将企图填满整个缓│
    
    ││冲区.在输出时,在把任何数据写到文件之前,将完全填充缓冲区.│
    
    │_IOLBF│文件是行缓冲区.当缓冲区为空时,下一个输入操作将仍然企图填整个缓│
    
    ││冲区.然而在输出时,每当新行符写到文件,缓冲区就被清洗掉.│
    
    │_IONBF│文件是无缓冲的.buf和size参数是被忽略的.每个输入操作将直接从文│
    
    ││件读,每个输出操作将立即把数据写到文件中.│
    
    └───┴───────────────────────────────┘
    

    Copy

    int fclose(FILE *stream)关闭一个流,可以是文件或设备(例如LPT1)

    int fcloseall() 关闭所有除stdin或stdout外的流

    int fflush(FILE *stream)关闭一个流,并对缓冲区作处理

    处理即对读的流,将流内内容读入缓冲区;

    对写的流,将缓冲区内内容写入流。成功返回0 int fflushall() 关闭所有流,并对流各自的缓冲区作处理

    处理即对读的流,将流内内容读入缓冲区;

    对写的流,将缓冲区内内容写入流。成功返回. int access(char*filename,int amode) 本函数检查文件filename并返回文件的属性,

    函数将属性存于amode中,amode由以下位的组合构成

     06可以读、写      04可以读  02可以写  01执行(忽略的)   00文件存在
    

    Copy

    如果filename是一个目录,函数将只确定目录是否存在

    函数执行成功返回0,否则返回-1 int chmod(char *filename,intpermiss) 本函数用于设定文件filename的属性

    permiss可以为以下值

      S_IWRITE允许写  S_IREAD允许读 S_IREAD|S_IWRITE允许读、写
    

    Copy

    int _chmod(char *filename,int func[,intattrib]);

    本函数用于读取或设定文件filename的属性,

    当func=0时,函数返回文件的属性;当func=1时,函数设定文件的属性

    若为设定文件属性,attrib可以为下列常数之一

    FA_RDONLY只读 FA_HIDDEN隐藏 FA_SYSTEM系统 接口子程序,所在函数库为:dos.h、bios.h

    unsigned sleep(unsigned seconds)暂停seconds微秒(百分之一秒)

    int unlink(char *filename)删除文件filename

    unsigned FP_OFF(void far *farptr)本函数用来取远指针farptr的偏移量

    unsigned FP_SEG(void far *farptr)本函数用来没置远指针farptr的段值

    void far *MK_FP(unsigned seg,unsignedoff)根据段seg和偏移量off构造一个far指针

    unsigned getpsp()取程序段前缀的段地址,并返回这个地址

    char *parsfnm(char *cmdline,struct fcb *fcbptr,int option)

    函数分析一个字符串,通常,对一个文件名来说,是由cmdline所指的一个命令行.

    文件名是放入一个FCB中作为一个驱动器,文件名和扩展名.FCB是由fcbptr所指

    定的.option参数是DOS分析系统调用时,AL文本的值. int absread(int drive,intnsects,int sectno,void *buffer)本函数功能为读特定的

    磁盘扇区,drive为驱动器号(0=A,1=B等),nsects为要读的扇区数,sectno为开始的逻

    辑扇区号,buffer为保存所读数据的保存空间 int abswrite(int drive,intnsects,int sectno,void *buffer)本函数功能为写特定的

    磁盘扇区,drive为驱动器号(0=A,1=B等),nsects为要写的扇区数,sectno为开始的逻

    辑扇区号,buffer为保存所写数据的所在空间 void getdfree(int drive,struct dfree*dfreep)本函数用来取磁盘的自由空间,

    drive为磁盘号(0=当前,1=A等).函数将磁盘特性的由dfreep指向的dfree结构中.

    dfree结构如下:

    ┌───────────────────┐

    │structdfree │

    │{ │

    │ unsigned df_avail; │

    │ unsigned df_total; │

    │ unsigned df_bsec; │

    │ unsigned df_sclus; │

    │} │

    └───────────────────┘ char far*getdta() 取磁盘转换地址DTA

    void setdta(char far *dta)设置磁盘转换地址DTA

    void getfat(int drive,fatinfo *fatblkp)

    本函数返回指定驱动器drive(0=当前,1=A,2=B等)的文件分配表信息

    并存入结构fatblkp中,结构如下:

    ┌──────────────────┐

    │structfatinfo │

    │{ │

    │ char fi_sclus; │

    │ char fi_fatid; │

    │ int fi_nclus; │

    │ int fi_bysec; │

    │} │

    └──────────────────┘ void getfatd(struct fatinfo *fatblkp)本函数返回当前驱动器的文件分配表信息,

    并存入结构fatblkp中,结构如下:

    ┌──────────────────┐

    │structfatinfo │

    │{ │

    │ char fi_sclus; │

    │ char fi_fatid; │

    │ int fi_nclus; │

    │ int fi_bysec; │

    │} │

    └─────────────── int bdos(int dosfun,unsigneddosdx,unsigned dosal)本函数对MSDOS系统进行调用,

    dosdx为寄存器dx的值,dosal为寄存器al的值,dosfun为功能号 1 int bdosptr(int dosfun,void*argument,unsiigned dosal)本函数对MSDOS系统进行调用,

    argument为寄存器dx的值,dosal为寄存器al的值,dosfun为功能号 1 int int86(int intr_num,unionREGS *inregs,union REGS *outregs)

    执行intr_num号中断,用户定义的寄存器值存于结构inregs中,

    执行完后将返回的寄存器值存于结构outregs中. int int86x(intintr_num,union REGS *inregs,union REGS *outregs,

        struct SREGS *segregs)执行intr_num号中断,用户定义的寄存器值存于
    

    Copy

    结构inregs中和结构segregs中,执行完后将返回的寄存器值存于结构outregs中. int intdos(union REGS*inregs,union REGS *outregs)

    本函数执行DOS中断0x21来调用一个指定的DOS函数,用户定义的寄存器值

    存于结构inregs中,执行完后函数将返回的寄存器值存于结构outregs中 int intdosx(union REGS*inregs,union REGS *outregs,struct SREGS *segregs)

    本函数执行DOS中断0x21来调用一个指定的DOS函数,用户定义的寄存器值

    存于结构inregs和segregs中,执行完后函数将返回的寄存器值存于结构outregs中 void intr(int intr_num,struct REGPACK*preg)本函数中一个备用的8086软件中断接口

    它能产生一个由参数intr_num指定的8086软件中断.函数在执行软件中断前,

    从结构preg复制用户定义的各寄存器值到各个寄存器.软件中断完成后,

    函数将当前各个寄存器的值复制到结构preg中.参数如下:

    intr_num 被执行的中断号

    preg为保存用户定义的寄存器值的结构,结构如下

    ┌──────────────────────┐

    │structREGPACK │

    │{ │

    │ unsignedr_ax,r_bx,r_cx,r_dx; │

    │ unsigned r_bp,r_si,r_di,r_ds,r_es,r_flags; │

    │} │

    └──────────────────────┘

    函数执行完后,将新的寄存器值存于结构preg中 void keep(int status,intsize)以status状态返回MSDOS,但程序仍保留于内存中,所占

    用空间由size决定. 1 void ctrlbrk(int (*fptr)())设置中断后的对中断的处理程序.

    void disable() 禁止发生中断

    void enable() 允许发生中断

    void geninterrupt(intintr_num)执行由intr_num所指定的软件中断

    void interrupt(* getvect(int intr_num))()返回中断号为intr_num的中断处理程序,

    例如: old_int_10h=getvect(0x10); 1 void setvect(int intr_num,void interrupt(*isr)()) 设置中断号为intr_num的中

    断处理程序为isr,例如: setvect(0x10,new_int_10h); 1 void harderr(int (*fptr)()) 定义一个硬件错误处理程序,

    每当出现错误时就调用fptr所指的程序 1 void hardresume(int rescode)硬件错误处理函数

    void hardretn(int errcode) 硬件错误处理函数

    int inport(int prot)从指定的输入端口读入一个字,并返回这个字

    int inportb(intport)从指定的输入端口读入一个字节,并返回这个字节

    void outport(int port,int word)将字word写入指定的输出端口port

    void outportb(int port,charbyte)将字节byte写入指定的输出端口port

    int peek(intsegment,unsigned offset) 函数返回segment:offset处的一个字

    char peekb(int segment,unsignedoffset)函数返回segment:offset处的一个字节

    void poke(int segment,int offset,char value)将字value写到segment:offset处

    void pokeb(int segment,int offset,int value)将字节value写到segment:offset处

    int randbrd(struct fcb*fcbptr,int reccnt)

    函数利用打开fcbptr所指的FCB读reccnt个记录. 1 int randbwr(struct fcb*fcbptr,int reccnt)

    函数将fcbptr所指的FCB中的reccnt个记录写到磁盘上 1 void segread(struct SREGS*segtbl)函数把段寄存器的当前值放进结构segtbl中

    int getverify() 取检验标志的当前状态(0=检验关闭,1=检验打开)

    void setverify(int value)设置当前检验状态,

    value为0表示关闭检验,为1表示打开检验 1 int getcbrk()本函数返回控制中断检测的当前设置

    int setcbrk(intvalue)本函数用来设置控制中断检测为接通或断开

    当value=0时,为断开检测.当value=1时,为接开检测 1 int dosexterr(struct DOSERR*eblkp)取扩展错误.在DOS出现错误后,此函数将扩充的

    错误信息填入eblkp所指的DOSERR结构中.该结构定义如下:

    ┌──────────────┐

    │structDOSERR │

    │{ │

    │ int exterror; │

    │ char class; │

    │ char action; │

    │ char locus; │

    │} │

    └──────────────┘ int bioscom(int cmd,chartype,int port) 本函数负责对数据的通讯工作,

    cmd可以为以下值:

    0置通讯参数为字节byte值 1 发送字符通过通讯线输出

    2从通讯线接受字符 3 返回通讯的当前状态

    port为通讯端口,port=0时通讯端口为COM1,port=1时通讯端口为COM2,以此类推

    byte为传送或接收数据时的参数,为以下位的组合:

    ┌───┬─────┬───┬─────┬───┬─────┐

    │byte值│意义 │byte值│意义 │byte值│意义 │ │

    ├───┼─────┼───┼─────┼───┼─────┤

    │0x02 │7数据位 │0x03 │8数据位 │0x00 │1停止位 │ │

    │0x04 │2停止位 │0x00 │无奇偶性 │0x08 │奇数奇偶性│ │

    │0x18 │偶数奇偶性│0x00 │110波特 │0x20 │150波特 │ │

    │0x40 │300波特 │0x60 │600波特 │0x80 │1200波特 │ │

    │0xA0 │2400波特 │0xC0 │4800波特 │0xE0 │9600波特 │ │

    └───┴─────┴───┴─────┴───┴─────┘

    例如:0xE0|0x08|0x00|0x03即表示置通讯口为9600波特,奇数奇偶性,1停止位,

        8数据位.
    

    Copy

    函数返回值为一个16位整数,定义如下:

    第15位 超时

    第14位 传送移位寄存器空

    第13位 传送固定寄存器空

    第12位 中断检测

    第11位 帧错误

    第10位 奇偶错误

    第 9位 过载运行错误

    第 8位 数据就绪

    第 7位 接收线信号检测

    第 6位 环形指示器

    第 5位 数据设置就绪

    第 4位 清除发送

    第 3位 δ接收线信号检测器

    第 2位 下降边环形检测器

    第 1位 δ数据设置就绪

    第 0位 δ清除发送 int biosdisk(int cmd,intdrive,int head,int track,

          int sector,int nsects,void *buffer)
    

    Copy

    本函数用来对驱动器作一定的操作,cmd为功能号,

    drive为驱动器号(0=A,1=B,0x80=C,0x81=D,0x82=E等).cmd可为以下值:

    0 重置软磁盘系统.这强迫驱动器控制器来执行硬复位.忽略所有其它参数.

    1 返回最后的硬盘操作状态.忽略所有其它参数

    2 读一个或多个磁盘扇区到内存.读开始的扇区由head、track、sector给出。

     扇区号由nsects给出。把每个扇区512个字节的数据读入buffer
    

    Copy

    3 从内存读数据写到一个或多个扇区。写开始的扇区由head、track、sector

     给出。扇区号由nsects给出。所写数据在buffer中,每扇区512个字节。
    

    Copy

    4 检验一个或多个扇区。开始扇区由head、track、sector给出。扇区号由

     nsects给出。
    

    Copy

    5 格式化一个磁道,该磁道由head和track给出。buffer指向写在指定track上

     的扇区磁头器的一个表。
    
     以下cmd值只允许用于XT或AT微机:
    

    Copy

    6 格式化一个磁道,并置坏扇区标志。

    7 格式化指定磁道上的驱动器开头。

    8 返回当前驱动器参数,驱动器信息返回写在buffer中(以四个字节表示)。

    9 初始化一对驱动器特性。

    10 执行一个长的读,每个扇区读512加4个额外字节

    11 执行一个长的写,每个扇区写512加4个额外字节

    12 执行一个磁盘查找

    13 交替磁盘复位

    14 读扇区缓冲区

    15 写扇区缓冲区

    16 检查指定的驱动器是否就绪

    17 复核驱动器

    18 控制器RAM诊断

    19 驱动器诊断

    20 控制器内部诊

    函数返回由下列位组合成的状态字节:

    0x00 操作成功

    0x01 坏的命令

    0x02 地址标记找不到

    0x04 记录找不到

    0x05 重置失败

    0x07 驱动参数活动失败

    0x09 企图DMA经过64K界限

    0x0B 检查坏的磁盘标记

    0x10 坏的ECC在磁盘上读

    0x11 ECC校正的数据错误(注意它不是错误)

    0x20 控制器失效

    0x40 查找失败

    0x80 响应的连接失败

    0xBB 出现无定义错误

    0xFF 读出操作失败 int biodquip()检查设备,函数返回一字节,该字节每一位表示一个信息,如下:

    第15位 打印机号

    第14位 打印机号

    第13位 未使用

    第12位 连接游戏I/O

    第11位 RS232端口号

    第 8位 未使用

    第 7位 软磁盘号

    第 6位 软磁盘号,

         00为1号驱动器,01为2号驱动器,10为3号驱动器,11为4号驱动器
    

    Copy

    第 5位 初始化

    第 4位 显示器模式

         00为未使用,01为40x25BW彩色显示卡
    
         10为80x25BW彩色显示卡,11为80x25BW单色显示卡
    

    Copy

    第 3位 母扦件

    第 2位 随机存贮器容量,00为16K,01为32K,10为48K,11为64K

    第 1位 浮点共用处理器

    第 0位 从软磁盘引导 int bioskey(intcmd)本函数用来执行各种键盘操作,由cmd确定操作。

    cmd可为以下值:

    0 返回敲键盘上的下一个键。若低8位为非0,即为ASCII字符;若低8位为0,

    则返回扩充了的键盘代码。
    

    Copy

    1 测试键盘是否可用于读。返回0表示没有键可用;否则返回下一次敲键之值。

    敲键本身一直保持由下次调用具的cmd值为0的bioskey所返回的值。
    

    Copy

    2 返回当前的键盘状态,由返回整数的每一个位表示,见下表:

    ┌──┬───────────┬───────────┐

    │ 位│为0时意义 │为1时意义 │

    ├──┼───────────┼───────────┤

    │ 7 │插入状态 │改写状态 │

    │ 6 │大写状态 │小写状态 │

    │ 5 │数字状态,NumLock灯亮 │光标状态,NumLock灯熄 │

    │ 4 │ScrollLock灯亮 │ScrollLock灯熄 │

    │ 3 │Alt按下 │Alt未按下 │

    │ 2 │Ctrl按下 │Ctrl未按下 │

    │ 1 │左Shift按下 │左Shift未按下 │

    │ 0 │右Shift按下 │右Shift未按下 │

    └──┴───────────┴───────────┘ int biosmemory()返回内存大小,以K为单位.

    int biosprint(int cmd,intbyte,int port)控制打印机的输入/输出.

    port为打印机号,0为LPT1,1为LPT2,2为LPT3等

    cmd可以为以下值:

    0 打印字符,将字符byte送到打印机
    
    1 打印机端口初始化
    
    2 读打印机状态
    

    Copy

    函数返回值由以下位值组成表示当前打印机状态

    0x01 设备时间超时
    
    0x08 输入/输出错误
    
    0x10 选择的
    
    0x20 走纸
    
    0x40 认可
    
    0x80 不忙碌
    

    Copy

    int biostime(int cmd,longnewtime)计时器控制,cmd为功能号,可为以下值

    0 函数返回计时器的当前值

    1 将计时器设为新值newtime struct country country(int countrycmode,struct countrycountryp)

    本函数用来控制某一国家的相关信息,如日期,时间,货币等.

    若countryp=-1时,当前的国家置为countrycode值(必须为非0).否则,由countryp

    所指向的country结构用下列的国家相关信息填充:

    (1)当前的国家(若countrycode为0或2)由countrycode所给定的国家.

    结构country定义如下:

    ┌────────────────────┐

    │structcountry │

    │{ │

    │ int co_date; │

    │ charco_curr[5]; │

    │ charco_thsep[2]; │

    │ charco_desep[2]; │

    │ charco_dtsep[2]; │

    │ charco_tmsep[2]; │

    │ charco_currstyle; │

    │ charco_digits; │

    │ int (far *co_case)(); │

    │ charco_dasep; │

    │ charco_fill[10]; │

    │} │

    └────────────────────┘

    co_date的值所代表的日期格式是:

    0 月日年 1日月年 2 年月日

    co_currstrle的值所代表的货币显示方式是

    0 货币符号在数值前,中间无空格

    1 货币符号在数值后,中间无空格

    2 货币符号在数值前,中间有空格

    3 货币符号在数值后,中间有空格 操作函数,所在函数库为string.h、mem.h

    mem…操作存贮数组

    void *memccpy(void *destin,void *source,unsigned charch,unsigned n)

    void *memchr(void *s,char ch,unsigned n)

    void *memcmp(void *s1,void *s2,unsigned n)

    int memicmp(void s1,voids2,unsigned n)

    void *memmove(void *destin,void *source,unsigned n)

    void *memcpy(void *destin,void *source,unsigned n)

    void *memset(void *s,char ch,unsigned n)

    这些函数,mem…系列的所有成员均操作存贮数组.在所有这些函数中,数组是n字节长.

    memcpy从source复制一个n字节的块到destin.如果源块和目标块重迭,则选择复制方向,

    以例正确地复制覆盖的字节.

    memmove与memcpy相同.

    memset将s的所有字节置于字节ch中.s数组的长度由n给出.

    memcmp比较正好是n字节长的两个字符串s1和s2.些函数按无符号字符比较字节,因此,

    memcmp(“0xFF”,"\x7F",1)返回值大于0.

    memicmp比较s1和s2的前n个字节,不管字符大写或小写.

    memccpy从source复制字节到destin.复制一结束就发生下列任一情况:

    (1)字符ch首选复制到destin.

    (2)n个字节已复制到destin.

    memchr对字符ch检索s数组的前n个字节.

    返回值:memmove和memcpy返回destin

    memset返回s的值

    memcmp和memicmp─┬─若s1<s2返回值小于0

                   ├─若s1=s2返回值等于0
    
                   └─若s1>s2返回值大于0
    

    Copy

    memccpy若复制了ch,则返回直接跟随ch的在destin中的字节的一个指针;

         否则返回NULL
    

    Copy

    memchr返回在s中首先出现ch的一个指针;如果在s数组中不出现ch,就返回NULL. void movedata(int segsrc,int offsrc,

          int segdest,int offdest,
    
          unsigned numbytes)
    

    Copy

    本函数将源地址(segsrc:offsrc)处的numbytes个字节

    复制到目标地址(segdest:offdest) 1 2 3 4 5 6 7 void movemem(void source,voiddestin,unsigned len)

    本函数从source处复制一块长len字节的数据到destin.若源地址和目标地址字符串

    重迭,则选择复制方向,以便正确的复制数据. 1 2 3 void setmem(void *addr,int len,char value)

    本函数把addr所指的块的第一个字节置于字节value中. 1 str…字符串操作函数

    char stpcpy(char *dest,constchar *src)

    将字符串src复制到dest 1 char strcat(char *dest,constchar *src)

    将字符串src添加到dest末尾 1 char strchr(const char*s,int c)

    检索并返回字符c在字符串s中第一次出现的位置 1 int strcmp(const char *s1,const char *s2)

    比较字符串s1与s2的大小,并返回s1-s2 1 char strcpy(char *dest,constchar *src)

    将字符串src复制到dest 1 size_t strcspn(const char *s1,const char *s2)

    扫描s1,返回在s1中有,在s2中也有的字符个数 1 char strdup(const char*s)

    将字符串s复制到最近建立的单元 1 int stricmp(const char *s1,const char *s2)

    比较字符串s1和s2,并返回s1-s2 1 size_t strlen(const char *s)

    返回字符串s的长度 1 char strlwr(char *s)

    将字符串s中的大写字母全部转换成小写字母,并返回转换后的字符串 1 char strncat(char*dest,const char *src,size_t maxlen)

    将字符串src中最多maxlen个字符复制到字符串dest中 1 int strncmp(const char *s1,const char *s2,size_t maxlen)

    比较字符串s1与s2中的前maxlen个字符 1 char strncpy(char*dest,const char *src,size_t maxlen)

    复制src中的前maxlen个字符到dest中 1 int strnicmp(const char *s1,const char *s2,size_t maxlen)

    比较字符串s1与s2中的前maxlen个字符 1 char strnset(char *s,intch,size_t n)

    将字符串s的前n个字符置于ch中 1 char strpbrk(const char*s1,const char *s2)

    扫描字符串s1,并返回在s1和s2中均有的字符个数 1 char strrchr(const char*s,int c)

    扫描最后出现一个给定字符c的一个字符串s 1 char strrev(char *s)

    将字符串s中的字符全部颠倒顺序重新排列,并返回排列后的字符串 1 char strset(char *s,intch)

    将一个字符串s中的所有字符置于一个给定的字符ch 1 size_t strspn(const char *s1,const char *s2)

    扫描字符串s1,并返回在s1和s2中均有的字符个数 1 char strstr(const char*s1,const char *s2)

    扫描字符串s2,并返回第一次出现s1的位置 1 char strtok(char *s1,constchar *s2)

    检索字符串s1,该字符串s1是由字符串s2中定义的定界符所分隔 1 char strupr(char *s)

    将字符串s中的小写字母全部转换成大写字母,并返回转换后的字符串 1 存贮分配子程序,所在函数库为dos.h、alloc.h、malloc.h、stdlib.h、process.h

    int allocmem(unsigned size,unsigned *seg)利用DOS分配空闲的内存,

    size为分配内存大小,seg为分配后的内存指针 1 int freemem(unsigned seg)释放先前由allocmem分配的内存,seg为指定的内存指针

    int setblock(int seg,int newsize)本函数用来修改所分配的内存长度,

    seg为已分配内存的内存指针,newsize为新的长度 1 int brk(void *endds)

    本函数用来改变分配给调用程序的数据段的空间数量,新的空间结束地址为endds 1 char *sbrk(int incr)

    本函数用来增加分配给调用程序的数据段的空间数量,增加incr个字节的空间 1 unsigned long coreleft() 本函数返回未用的存储区的长度,以字节为单位

    void *calloc(unsigned nelem,unsignedelsize)分配nelem个长度为elsize的内存空间

    并返回所分配内存的指针 1 void *malloc(unsignedsize)分配size个字节的内存空间,并返回所分配内存的指针

    void free(void*ptr)释放先前所分配的内存,所要释放的内存的指针为ptr

    void *realloc(void *ptr,unsignednewsize)改变已分配内存的大小,ptr为已分配有内

    存区域的指针,newsize为新的长度,返回分配好的内存指针. 1 long farcoreleft()本函数返回远堆中未用的存储区的长度,以字节为单位

    void far *farcalloc(unsigned long units,unsigned longunitsz)

      从远堆分配units个长度为unitsz的内存空间,并返回所分配内存的指针
    

    Copy

    1 void *farmalloc(unsigned longsize)分配size个字节的内存空间,

    并返回分配的内存指针 1 void farfree(void far*block)释放先前从远堆分配的内存空间,

    所要释放的远堆内存的指针为block 1 void far *farrealloc(void far *block,unsigned longnewsize)改变已分配的远堆内

      存的大小,block为已分配有内存区域的指针,newzie为新的长度,返回分配好
    
      的内存指针
    

    Copy

    1 2 3 时间日期函数,函数库为time.h、dos.h

    在时间日期函数里,主要用到的结构有以下几个:

    总时间日期贮存结构tm

    ┌──────────────────────┐

    │structtm │

    │{ │

    │ 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; │

    │} │

    └──────────────────────┘

    日期贮存结构date

    ┌───────────────┐

    │structdate │

    │{ │

    │ int da_year; │

    │ char da_day; │

    │ char da_mon; │

    │} │

    └───────────────┘

    时间贮存结构time

    ┌────────────────┐

    │structtime │

    │{ │

    │ unsigned char ti_min; │

    │ unsigned char ti_hour; │

    │ unsigned charti_hund; │

    │ unsigned char ti_sec; │

    │ │

    └────────────────┘

    char *ctime(long *clock)

       本函数把clock所指的时间(如由函数time返回的时间)转换成下列格式的
    
       字符串:Mon Nov 21 11:31:54 1983\n\0
    

    Copy

    1 2 3 char *asctime(struct tm *tm)

       本函数把指定的tm结构类的时间转换成下列格式的字符串:
    
       Mon Nov 21 11:31:54 1983\n\0
    

    Copy

    1 2 3 double difftime(time_t time2,time_t time1)

       计算结构time2和time1之间的时间差距(以秒为单位)
    

    Copy

    1 struct tm *gmtime(long *clock)本函数把clock所指的时间(如由函数time返回的时间)

       转换成格林威治时间,并以tm结构形式返回
    

    Copy

    1 struct tm localtime(longclock)本函数把clock所指的时间(如函数time返回的时间)

       转换成当地标准时间,并以tm结构形式返回
    

    Copy

    1 void tzset()本函数提供了对UNIX操作系统的兼容性

    long dostounix(struct date *dateptr,struct time *timeptr)

       本函数将dateptr所指的日期,timeptr所指的时间转换成UNIX格式,并返回
    
       自格林威治时间1970年1月1日凌晨起到现在的秒数
    

    Copy

    void unixtodos(long utime,struct date *dateptr,struct time *timeptr)

       本函数将自格林威治时间1970年1月1日凌晨起到现在的秒数utime转换成
    
       DOS格式并保存于用户所指的结构dateptr和timeptr中
    

    Copy

    void getdate(struct date *dateblk)本函数将计算机内的日期写入结构dateblk 中以供用户使用

    void setdate(struct date *dateblk)本函数将计算机内的日期改成由结构dateblk所指定的日期

    void gettime(struct time*timep)本函数将计算机内的时间写入结构timep中, 以供用户使用

    void settime(struct time*timep)本函数将计算机内的时间改为 由结构timep所指的时间

    long time(long*tloc)本函数给出自格林威治时间1970年1月1日凌晨至现在所经 过的秒数,并将该值存于tloc所指的单元中.

    int stime(long*tp)本函数将tp所指的时间(例如由time所返回的时间) 写入计算机中.


    1. ↩︎

    2. ↩︎

    3. ↩︎

    4. ↩︎

    5. ↩︎

    6. ↩︎

    7. ↩︎

    8. ↩︎

    9. ↩︎

    10. ↩︎

    11. ↩︎

    12. ↩︎

    13. ↩︎

    14. ↩︎

    15. ↩︎

    16. ↩︎

    17. ↩︎

    18. ↩︎

    19. ↩︎

    20. ↩︎

    21. ↩︎

    22. ↩︎

    23. ↩︎

    24. ↩︎

    25. ↩︎

    26. ↩︎

    27. ↩︎

  • 通过的题目

  • 最近活动

    This person is lazy and didn't join any contests or homework.
  • 最近编写的题解

    This person is lazy and didn't write any solutions.

题目标签

客观题
1