c语言属于语言

2024-09-21

c语言属于语言(共8篇)

c语言属于语言 篇1

汉语言文学专业的考研大方向属于 中国语言文学一级学科,下设8个二级学科

1、文艺学

(研究方向有:文学理论、文艺美学、文学批评、文化与诗学、西方文论、中西比较诗学、中国古典诗学、中国文学批评史等)

2、语言学及应用语言学

(研究方向有:理论语言学、应用语言学、社会语言学及方言学、语言信息处理、语言测试、文化语言学、语音学、对外汉语教学等)

3、汉语言文字学

(研究方向有:汉语方言、汉语史、汉语词汇学、现代汉语语法修辞、音韵文字训诂、中古汉语词汇语法、汉语语音学、汉语发展史、汉字信息处理、对外汉语教学等)

4、中国古典文献学

(研究方向有:先秦两汉魏晋南北朝文学文献、唐宋文学文献、元明清文学文献等)

5、中国古代文学

(研究方向有:先秦两汉文学、魏晋隋唐文学、宋元文学、明清及近代文学、分体文学史、古代文论等)

6、中国现当代文学

(研究方向有:中国现代文学、中国当代文学、儿童文学、戏剧影视文学、科幻文学、民间文学、当代文化与文学研究、二十世纪中国文学思潮、中国现当代文学与乡土文化等)

7、中国少数民族语言文学

(研究方向有:语言学概论、古代汉语、现代汉语、文学概论、中国文学史、有关民族语言史、有关民族文学史、有关民族现代语言、汉语—民族语语法对比、有关民族历史等)

8、比较文学与世界文学

(研究方向有:中外文学关系、比较文学与文论、世界华人文学研究、外国文学与翻译研究、比较文学理论、西方文学与中西比较文学、东方文学与东方比较文学、比较诗学、欧美文学、国外中国学等)

c语言属于语言 篇2

关键词:汇编语言,C/C++语言

在计算机系统的应用程序中, 所有汇编任务都由汇编语言来完成, 这样虽然完成任务的效率很高, 但是工作量却非常大, 会影响到对于应用程序的维护。若是所有的程序都是由C/C++语言进行编程, 虽然执行过程比较的简单, 但是这种方式却导致了目标代码的执行任务效率低, 实时性很差。所以在嵌入式系统中, 主要采用的编程方式是汇编语言与C/C++语言混合编程形式, 在编程过程中, 初始化任务由汇编语言来完成, 主要的任务则是由C/C++语言来完成, 从而达到了最大的效果。

1 ARM处理器

ARM处理器主要是利用编译器将汇编语言以及C/C++语言进行相互的切换, 并且ARM制定了相关标准, 来保障切换过程中的顺利实施。

1.1 寄存器使用规则

ATPCS为ARM寄存器进行不同命名, 从而在编程的过程中来利用ATPCS寄存器进行编程。

1.2 堆栈的使用规则

在ATPCS中规定, 堆栈的主要类型是FD, 被称为满递减堆栈, 所以必须要利用STMFD/LDMFF进行堆栈的操作。

1.3 参数传递规则

参数传递的规则不一样, 利用参数的数量可以将子程序分为参数数量固定, 以及参数数量不固定的子程序, 对于参数变化的子程序, 若参数的数量少于四个, 那么要利用寄存器来进行参数的传递, 若参数的数量多余四个, 那么必须要利用堆栈来进行参数的传递, 所以参数之间传递的规则不同。

2 C语言

2.1 汇编语言调用C语言

在对计算机程序的开发中, 前期由汇编语言进行初始化的编程, 然后在进行C语言之间的切换, 对于C语言的切换, 主要是通过BL来实现的。以下是调用的字符:

汇编语言的集成环境如图1所示。

2.2 C语言调用汇编语言

在程序中, 使用“C++”程序来调用C程序, 以下是调用C程序的字符:

2.3 汇编程序调用C++程序

在汇编语言与C++程序的切换时, 必须要利用关键词进行声明, 在C++程序的结构中, 如果没有基类, 则要使相应的存储结构与ARMC相同。并且在汇编过程中将参数的数据放在数据栈中, 只有这样才能使被调用的C++程序访问到相应的参数。

3 混合编程

在进行混合编程的过程中, 若汇编代码较短, 那么可以利用内嵌汇编的方式进行混合编程, 不会直接指定寄存器, 而是直接利用编译器进行分配。主要的内嵌汇编语言如下:

以下是利用字符串复制的方式实现混合汇编:

4 结语

在计算机系统嵌入式应用程序的开发中, 利用ARM汇编语言与C/C++语言相互结合的混合编程方式, 可以在很大程度上提高编程的最佳效果。本文主要举出了ARM汇编语言以及C/C++语言汇编中的实例, 提出了设计的方法, 阐述了ARM汇编语言与C/C++语言相互结混合编程方式的实现。

参考文献

[1]翟乃强, 隋树林.汇编语言与C语言及Visual C++混合编程[J].青岛科技大学学报 (自然科学版) , 2003.

[2]王付山.汇编语言程序设计教学初探[J].福建电脑, 2005.

创造属于两个人的“语言密码” 篇3

家庭中,时常会上演这样经典的一幕:男人下班回到家,女人开始向她唠叨这一天中所有的不快,明明起个大早,可上班偏偏遇上塞车,结果因迟到而被老板警告;同事小张整天显摆她买的衣服价值不菲,生怕别人不知道她有个有钱的老爸;小李在领导面前总是撒娇献媚,这次升职跟这不无关系……听着女人的老生常谈,男人拿出120分的耐心,劝导她,这说明你还应该早点起,把塞车的时间计算在内,别人有钱是她的事,你没有必要生气……费尽心思开导老婆,可是不仅没能让她心情好一点,反而转忧为怒。“你怎么总盯着我的不是”,“跟你说什么就是说不通!”男人困惑,自己招谁惹谁了,好心当成驴肝肺。

“男人的腔调”PK“女人的口吻”

同一个意思,男性和女性会倾向于不同的方式表达出来,一般来讲,男人的腔调与女人的口吻会有较大的差异,下面我们就来看看其中差别何在?我们又将如何打通“他和她”的语言通道呢?

女性倾向合作性谈话

在交流中,女性趋向于用委婉、模棱两可、试探性的表达方式,她们最常用的句式是反意疑问句,比如:“这个菜的味道有点咸,你觉得呢?”“你帮我拎一下这个袋子,好吗?”这样做的目的是为了传达尊重的态度并建立一种和谐的交际气氛。

PK

男性倾向竞争性谈话

而男性则不同,他们更喜欢用直率、果断的表达方式。因此,多数情况下男性使用祈使句来进行表达。比如:“你这个做法不好。”“把柜子上的东西拿过来。”在夫妻相处中,男性若过于频繁地使用这种表达方式通常会让女性觉得生硬,不尽人情,从而产生负性情绪,而女性的表达方式在男性看来未免有些啰嗦。

女性的思维成网状

女性通常会针对一个话题说很久并且延伸开来,她们总是能将很多男人看来不相干的事情联结在一起,比如:“我昨天买了一件裙子样式挺漂亮,就是颜色有点暗了。唉,都怪我皮肤不是特别白,要不穿起来一定很好看。你看人家小孙长得多白呀……”

PK

男性思维成阶梯状

他们喜欢从一个话题跳到另一个话题,女性还在抓着一个话题无限发散的时候,男性可能已经说了很多个话题了。夫妻相处中,男女的这种语言差异常常会让妻子觉得丈夫在打岔,明明自己跟他说东,可他却偏扯到西。而女性的这种发散思维又常常让以逻辑见长的丈夫感到迷惑。

女性聆听时反馈

女性在聆听的时候经常发出诸如“嗯”、“啊哈”或“是”等声音给予对方回馈,男性有时又会把女性发出的声音当作是不耐烦的表现。

PK

男性聆听时专注

而男性在聆听的时候大多保持沉默,妻子通常把丈夫的沉默当作注意力不集中或是心不在焉,从而感到不开心。

女性情感性表达

女性感情丰富,表达的自由度也比较大,因此她们的话语带有比较多的情感色彩,属于情感型。比如:“邻居家的小女孩好可爱啊。”“昨天的电影太有意思了。”

PK

男性事实型表达

男性习惯于陈述事实和资料,通常关注言语表达的字面内容,属于事实型。夫妻相处中,这些差别经常会造成夫妻间的误解。

破译策略:

把握对方的语言特点:

夫妻间要想和谐相处,了解点男女语言特点差异是必不可少的。语言表达方式与思维方式密不可分。可以看一些有关男女思维方式差异的书,也不妨和异性朋友交流一下心得。特别是当你与爱人发生矛盾而又不得其解时,听听异性朋友的意见,或许你会发现,原来是男女不同的表达方式使你们陷入了误解。

多发掘对方表达方式的优势:

无论男人还是女人,他们的表达方式各有优势。在理解对方语言表达特点的情况下,多去发掘对方的优势,这样更加有利于夫妻感情的融洽以及沟通的协调。比如男性的直截了当更加果断,能提高办事效率,而女性的委婉谦逊可以拉近感情。无论是妻子还是丈夫,在沟通过程中要多去发掘这些表达方式的优势,当你总去关注好的一面,自然也就能够接受对方,并且可以适应对方。

以开放的心态沟通,巧妙化解矛盾:

如果他说了什么话让你感到不开心,千万别憋在肚子里生闷气,把你的感受直接表达出来。但需要注意的是,这种表达不是指责抱怨式的,而是带着开放的态度。比如,当你跟老公讲话时,你发现他没有反馈。不要武断地认为他不关心你,也不要抱怨“我跟你说话你怎么总是心不在焉。”而是心平气和地告诉他,“假如我说话你保持沉默的话,我会觉得你没在听。”这样的表达方式有利于打通你们的沟通渠道,为矛盾的化解打下基础。

创建4类夫妻档的“语言密码”

虽然男女之间的语言习惯具有普遍的差异,但是,不同的夫妻匹配类型,在语言交流方面又会遇到不同的矛盾。其实,为了避免矛盾误会,使沟通更加顺畅和谐,每一对夫妻都可以创建些属于你们两个人的“语言密码”,下面就来看看,常见的4种夫妻档,他们的“语言密码”如何创建。

抱怨型妻子+逻辑型丈夫

快晚上12点了,丈夫还没有回来,妻子憋了一肚子气。“铃……”门铃响了,丈夫终于回来了。

妻子:“跟你说早点回来,怎么又这么晚?”

丈夫:“和客户谈点重要的事情,总不能没谈完就走吧?”

妻子:“每次都说谈重要的事情,大半夜才回家,我看你心里就没有这个家?”

丈夫:“哪有每次都这样,不就这段时间比较忙,晚回来会吗,干嘛生这么大的气。”

妻子:“你还有理啦,前天你明明答应我早点回来一起出去吃饭,可还是加班到了9点钟,还有上个月,说好了周末带儿子逛公园,又因为公司的事情耽误了……”

丈夫:“你这都扯哪去了,我不就晚回来一会吗,把陈年的事情都折腾出来了?”

妻子:“本来就是你自己做的事,自己还不承认。”……

心理话外音:

比起男人来,女人无疑更热衷于翻旧账。这主要“得益”于女人的形象记忆,对于具体的事物,能记住更多的具体细节,那些鸡毛蒜皮的小事,在她们的记忆中,更清晰更生动,于是更容易信手拈来做论据,并且她们擅长将很多男人看来不相干的事情勾连起来,让以逻辑思维见长的男人们不知所措。

适用密码:切断“导火线”

女人翻起“旧账”没完没了,这会让男人身陷其中而感到无奈,最好的办法是在两个人情绪都好的时候做一个约定。这时候,男方可以用类似“宝贝儿,不如…”的句式转移话题。老婆在老公委婉的提醒下,也应该立即结束刚才的话题,因为在坏情绪下任何谈话都有变为吵架的危险。等到事后,两人再回过头来,其实事情就非常好解决了。

浪漫型妻子+木讷型丈夫

妻子过生日,丈夫陪妻子逛商场。

丈夫:“这条手链很漂亮,你戴上一定很好看,我送给你吧。”

妻子:“好贵啊,算了吧。”

丈夫:“恩,是挺贵的,等过段时间打折再说吧。”

妻子有些不悦。

妻子:“老公,你看这条裙子怎么样?”

丈夫:“不错。”

妻子:“那我试试吧。”

丈夫:“天啊,一条裙子1000多,比手链还贵,算了算了。”

妻子:“你这人怎么跟守财奴似的,钻钱眼里去了?”

丈夫:“你刚才不是也说贵了吗?”

妻子悻悻地走了。

心理话外音:

女性对于礼物的关注与女性的思维方式有着密切的关系。大多数女性在情感上会有一种线性的思维方式,即将爱人送礼物这样的事情与“他是否爱我”直接挂钩。于是,在许多男性看来的“小事”,对于许多女性特别是那些性格中带有较强浪漫色彩的女性来讲,就成为了感情生活中的大事。有意思的是男性却是另外一种思路。大多数男性不会把诸如送礼物这样的事情与“是否爱我”挂钩。特别是对于理性较强或是和女性接触较少的男性,很多时候并不容易理解女性的这种思路。他们倾向于从女性语言的表面意思来理解其含义,其直接后果是,女性产生了不同程度的负性情绪反应,而男性则会认为她们“莫名其妙”“无理取闹”或“耍小姐脾气”。

适用密码:多给老公一些暗示

木讷的人经常会觉得浪漫的人说话像是迷,老是拐弯抹角,所以妻子不妨在老公“猜谜”时多给他一些暗示。例如,妻子可以说,“我很喜欢,但是你工作很辛苦”,让丈夫知道自己并不是真的不想要那条手链,而是在表达自己的体贴。那么丈夫在听到妻子体贴的话语后,也应该适当的表现自己的爱意,例如坚持为妻子购买手链,或者用其它的礼物和行为来代替。

强势型妻子+强势型丈夫

丈夫和妻子一起参加朋友聚会。众人面前,丈夫习惯性地点了一根烟。

妻子:“跟你说了多少次别再抽烟了,你怎么就是改不了。”

丈夫:“你怎么总是婆婆妈妈的,我抽一根怎么了。”

妻子:“你这人自制力怎么这么差,上次不是信誓旦旦说戒烟吗?”

丈夫:“什么时候说了,我怎么不知道。”

妻子:“说话不算数,还是个男人吗?”

丈夫:“少废话,你别管我。”

妻子委屈极了,冷战从此开始。

心理话外音:

妻子让丈夫戒烟,这原本没有什么错。从女性的思维方式来讲,随时督促他,给他施加压力是最好的办法。可是,对男性来讲,除戒烟之外,其背后还有另外一层含义——面子问题。即妻子当着众人的面对他发号施令会让他们失去男人的尊严。类似的言语上的矛盾通常会发生在强势型的妻子加强势型的丈夫身上。由于两个人都要“拔尖”,谁也不肯示弱,通常会陷入僵局。

适用密码:用暗号来代替提醒

被妻子管的严严实实的丈夫难免会被朋友们开玩笑说成是“妻管严”,有时候为了面子常常会反驳妻子善意的提醒。其实例如这样比较敏感的提醒,完全可以用更隐晦的方式来表现,例如这时候妻子可以上前去勾住丈夫的臂弯,或者捏一捏他的手,只让他一个人感受到自己的提醒。这么一来,丈夫就可以既保住自己的面子,又尊重了妻子。

情绪型妻子+理智型丈夫

妻子:“每天这么忙,我累得都快撑不住了。”

丈夫:“没有每天这么忙啊?上个周六我们不是还去逛了公园,周三的晚上还看了场电影呢。”

妻子:“我不就轻松了这两次,你怎么记得这么清楚,闲我不够累是不是。”

丈夫:“没有啊,我只不过是说出一个事实。”

妻子:“什么事实啊,事实是我累得都快不行了。”

丈夫:“你这人总是一副大小姐脾气,任性的毛病什么时候能改?”

妻子:“你没看我这几天脸色这么憔悴,黑眼圈都出来了,你怎么这么不知道心疼人呢。”

心理话外音:

女人多采用最严重的语法,隐喻和绝对化的语言来表达她们的感觉。“每天这么忙,我累得都快撑不住了。”实际上正如男人所说,女人并没有每天每时都特别忙,她也有轻松的时候。可问题在于,当女人说出这些话的时候目的不在于陈述事实,而是表达内心的感觉和期待,“我觉得很累,需要你的关心与安慰。”然而,女人所使用的字面意思很容易误导习惯于陈述事实和资料的男人。他们常常不能理解这种表达背后的“弦外之音”,把这种表达当真,因而常常不表赞同。女人诸如此类的表述有很多,比如“房间里为什么总是这么乱?”“根本没人关心我。”“没有一件事做得好。”等等。

适用密码:运用有意义的事物

这样的夫妻不妨找一些两个人经历过的事情或是有特别含义的物件来设定密码。比如:妻子情绪不好,可以不对着老公直接抱怨,而是提议到当初两人经常约会的公园走走。丈夫一旦听到妻子这么提议,就知道她情绪不好,陪她一起散步,主动的关心和询问她。这种关心者主动,被关心者被动的模式会让夫妻两人更加体会到相濡以沫的温暖。

c语言属于语言 篇4

7.1.1二维数组的定义

前面介绍的数组只有一个下标,称为一维数组,其数组元素也称为单下标变量。在实际问题中有很多量是二维的或多维的,因此C语言允许构造多维数组。多维数组元素有多个下标,以标识它在数组中的位置,所以也称为多下标变量。本小节只介绍二维数组,多维数组可由二维数组类推而得到。

二维数组定义的一般形式是:类型说明符 数组名[常量表达式1][常量表达式2]

其中常量表达式1表示第一维下标的长度,常量表达式2 表示第二维下标的长度。例如:

int a[3][4];说明了一个三行四列的数组,数组名为a,其下标变量的类型为整型。该数组的下标变量共有3×4个,即:

a[0][0],a[0][1],a[0][2],a[0][3]

a[1][0],a[1][1],a[1][2],a[1][3]

a[2][0],a[2][1],a[2][2],a[2][3] 二维数组在概念上是二维的,即是说其下标在两个方向上变化,下标变量在数组中的位置也处于一个平面之中,而不是象一维数组只是一个向量。但是,实际的硬件存储器却是连续编址的,也就是说存储器单元是按一维线性排列的。如何在一维存储器中存放二维数组,可有两种方式:一种是按行排列,即放完一行之后顺次放入第二行。另一种是按列排列,即放完一列之后再顺次放入第二列。

在C语言中,二维数组是按行排列的。即,先存放a[0]行,再存放a[1]行,最后存放a[2]行。每行中有四个元素也是依次存放。由于数组a说明为int类型,该类型占两个字节的内存空间,所以每个元素均占有两个字节)。

7.1.2二维数组元素的引用

二维数组的元素也称为双下标变量,其表示的形式为:

数组名[下标][下标] 其中下标应为整型常量或整型表达式。例如:

a[3][4] 表示a数组三行四列的元素。

下标变量和数组说明在形式中有些相似,但这两者具有完全不同的含义。数组说明的方括号中给出的是某一维的长度,即可取下标的最大值;而数组元素中的下标是该元素在数组中的位置标识。前者只能是常量,后者可以是常量,变量或表达式。

【例7.6】一个学习小组有5个人,每个人有三门课的考试成绩。求全组分科的平均成绩和各科总平均成绩。

可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。编程如下:

main(){

int i,j,s=0,average,v[3],a[5][3];

printf(“input scoren”);

for(i=0;i<3;i++){

for(j=0;j<5;j++)

{ scanf(“%d”,&a[j][i]);

s=s+a[j][i];}

v[i]=s/5;

s=0;

}

average =(v[0]+v[1]+v[2])/3;

printf(“math:%dnc languag:%dndbase:%dn”,v[0],v[1],v[2]);

printf(“total:%dn”, average);}

程序中首先用了一个双重循环。在内循环中依次读入某一门课程的各个学生的成绩,并把这些成绩累加起来,退出内循环后再把该累加成绩除以5送入v[i]之中,这就是该门课程的平均成绩。外循环共循环三次,分别求出三门课各自的平均成绩并存放在v数组之中。退出外循环之后,把v[0],v[1],v[2]相加除以3即得到各科总平均成绩。最后按题意输出各个成绩。

7.1.3二维数组的初始化

二维数组初始化也是在类型说明时给各下标变量赋以初值。二维数组可按行分段赋值,也可按行连续赋值。例如对数组a[5][3]:

按行分段赋值可写为:

int a[5][3]={ {80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85} };按行连续赋值可写为:

int a[5][3]={ 80,75,92,61,65,71,59,63,70,85,87,90,76,77,85};

这两种赋初值的结果是完全相同的。

【例7.7】

main(){

int i,j,s=0, average,v[3];

int a[5][3]={{80,75,92},{61,65,71},{59,63,70},{85,87,90},{76,77,85}};

for(i=0;i<3;i++)

{ for(j=0;j<5;j++)

s=s+a[j][i];

v[i]=s/5;

s=0;

} average=(v[0]+v[1]+v[2])/3;

printf(“math:%dnc languag:%dndFoxpro:%dn”,v[0],v[1],v[2]);

printf(“total:%dn”, average);

}

对于二维数组初始化赋值还有以下说明:

可以只对部分元素赋初值,未赋初值的元素自动取0值。

例如:

int a[3][3]={{1},{2},{3}};是对每一行的第一列元素赋值,未赋值的元素取0值。赋值后各元素的值为:0 0

0 0

0 0

int a [3][3]={{0,1},{0,0,2},{3}};赋值后的元素值为:

0 1 0

0 0 2

0 0 如对全部元素赋初值,则第一维的长度可以不给出。

例如:

int a[3][3]={1,2,3,4,5,6,7,8,9};可以写为:

int a[][3]={1,2,3,4,5,6,7,8,9};

数组是一种构造类型的数据。二维数组可以看作是由一维数组的嵌套而构成的。设一维数组的每个元素都又是一个数组,就组成了二维数组。当然,前提是各元素类型必须相同。根据这样的分析,一个二维数组也可以分解为多个一维数组。C语言允许这种分解。

如二维数组a[3][4],可分解为三个一维数组,其数组名分别为:

C语言函数 篇5

Turbo C函数

alloc.h brk 【功能】更改数据段空间的分配 【原型】int brk(void *endds)【位置】alloc.h

【说明】将程序数据段的顶部设置为endds所指向的内存位置。调用成功之后,返回0。如果调用失败则返回-1,同时设置errno。【参见】coreleft calloc 【功能】分配内存。

【原型】void *calloc(size_t nelem,size_t elsize)【位置】stdib.h,alloc.h

【说明】为nelem数据项的每elsize个字节分别分配空间,同时在空间中保存0值。返回一个指向新分配块的指针,如果没有足够的空间则返回NULL。【参见】malloc coreleft 【功能】返回测出的未使用内存量。

【原型】小型模块中unsigend long coreleft(void)【位置】alloc.h 【参见】malloc farcallc 【功能】从高端开始分配内存。

【原型】void far *farcalloc(unsigned ling nunits,unsigned ling unitsz)【位置】alloc.h

【说明】为nunits数据项的每unitsz个字节分配空间。返回指向新分配块的指针,如果没有足够的空间创建数据块,则返回NULL

【参见】farmalloc,farfree,farcoreleft,malloc,calloc farcoreleft 【功能】返回测出的高端未使用内存量。【原型】unsigned long farcoreleft(void)【位置】alloc.h

【说明】返回最高分配数据块和内存末端之间所剩的所有空间量(按照字节计算)。【参见】farcalloc,farmalloc,coreleft farfree 【功能】从高端释放一个数据块。

【原型】void farfree(void far *block)【位置】alloc

【参见】farmalloc,farcalloc farmalloc 【功能】从高端开始分配。

【原型】void far *farmalloc(unsigned long nbytes)【位置】alloc.h

【说明】返回一个指向新分配数据块的指针,如果没有足够的空间创建数据块则返回NULL 【参见】farcoreleft,farfree,farcalloc,malloc,farrealloc farrealloc

Turbo C函数

【功能】调整高端的分配数据块。

【原型】void far *farrealloc(void far *oldblock,unsigned long nbytes)【位置】alloc.h

【说明】返回重新分配数据块的地址,如果分配失败则返回NULL。返回值可能与源地址不同。【参见】farmalloc,realloc free 【功能】释放通过malloc或者calloc分配的数据块。【原型】void free(void *block)【位置】stdlib.h,alloc.h

【参见】maloc,calloc,freemem malloc 【功能】分配内存。

【原型】void *malloc(size_t size)【位置】alloc.h,stdlib.h

【说明】大小按照字节计算。返回一个指向新分配数据块的指针,如果没有足够的空间创建数据块,则返回NULL。如果size==0,则也返回NULL。

【参见】allicmem,free,calloc,realloc,farmalloc realloc 【功能】重新分配主存。

【原型】void *realloc(void *block,size_t size)【位置】alloc.h,stdlib.h

【说明】尝试将原先分配的数据块扩大或者缩小只size字节值。返回重新分配之后与原有地址不同的数据块的地址。如果数据块不能重新分配,或者size==0,则返回NULL 【参见】malloc,free sbrk 【功能】更改数据段的空间分配。【原型】void *sbrk(int incr)【位置】alloc.h

【说明】为数据块添加incr个字节。成功实现之后,sbrk返回原有中断值。如果失败则返回-1,同时设置errno.【参见】brk

ASSERT.H assert 【功能】对条件进行测试,可能会退出程序运行。【原型】void assert(int test)【位置】assert.h 【参见】abort

BIOS.H bioscom 【功能】RS-232的I/O通讯。

【原型】int bioscom(int cmd,char abyte,int port)【位置】bios.h

【说明】cmd的值及含义如下。0 设置通讯参数abyte。1 将abyte发送出去。接受一个字符(位于返回值的下8位中)。

Turbo C函数 返回状态。

Port为0表示COM1,为1表示COM2,依次类推。

返回值的高8位表示状态位,低8位内容根据cmd而定。biosdisk 【功能】BIOS磁盘服务。

【原型】int biosdisk(int cmd,int drive,int head,int track,int sector,int nsects,void *buffer)

【位置】bios.h

【说明】成功返回0,否则返回值为错误代码。biosequip 【功能】检查设备。

【原型】int biosequip(void)【位置】bios.h

【说明】返回BIOS设备的标记。bioskey 【功能】键盘接口。

【原型】bioskey(int cmd)【位置】bios.h

【说明】cmd的取值及动作如下。Cmd 动作

0 返回缓存中键入的扫描码,并从缓存中删除它。如果缓存为空,则等待下一次键入。1 返回缓存中键入的扫描码,但是不从缓存中删除它。如果缓存为空,则返回0。2 返回BIOS切换状态的标志。biosmemory 【功能】返回内存大小。

【原型】int biosmemory(void)【位置】bios.h

【说明】返回内存大小,以1KB为单位。biosprint 【功能】直接使用BIOS实现打印机I/O。

【原型】int biosprint(int cmd,int abyte,int port)【位置】bios.h

【说明】如果cmd为0,说明字节已经打印。如果cmd为1,说明打印机端口已经初始化。如果cmd为2,说明当前打印机状态可读。

对应所有cmd数值都返回当前打印机状态。biostime 【功能】BIOS定时器服务程序。

【原型】long biostime(int cmd,long newtime)【位置】bios.h

【说明】如果cmd为0,则读取BIOS定时器,如果cmd为1则设置BIOS定时器。时间从午夜开始计算,以时钟滴答为单位,每秒18.2的滴答。

CONIO.H cgets 【功能】从控制台读取字符串。【原型】char *cgets(char *str)【位置】conio.h

Turbo C函数

【说明】str[0]必须包含读入字符串的最大长度,str[1]则相应地设置为实际读入字符的个数。字符串从str[2]开始,函数返回&str[2]。【参见】cputs,gets,fgets clreol 【功能】清除文本模式的行尾。【原型】void clreol(void)【位置】conio.h

【参见】clrscr,delline,window clrscr 【功能】清除文本模式的窗口。【原型】void clrscr(void)【位置】conio.h

【参见】clreol,delline,window cprintf 【功能】在屏幕上的文本窗口中格式化输出 【原型】int cprintf(const char *format,…)【位置】conio.h

【说明】返回输出的字节个数。【参见】printf cputs 【功能】在屏幕上的文本窗口中书写字符串。【原型】int cputs(const char *str)【位置】conio.h

【说明】返回打印的最后一个字符。【参见】cgets,puts,fputs cputs 【功能】在屏幕上的文本窗口中书写字符串。【原型】int cputs(const char *str)【位置】conio.h

【说明】返回打印的最后一个字符串。【参见】cgets,puts,fputs cscanf 【功能】从控制台执行格式化输入。

【原型】int cscanf(char *format [,argument,…])【位置】conio.h

【说明】返回成功处理的输入字段数目。如果函数在文件结尾处读入,则返回值为EOF。【参见】scanf delline 【功能】删除文本窗口中的行。【原型】void delline(void)【位置】conio.h

【参见】clreol,clrscr,windows getch、getche 【功能】getch从控制台得到字符,但是不回显。Getche也从控制台得到字符,但同时回显在屏幕上。

【原型】int getch(void)4

Turbo C函数

int getche(void)【位置】conio.h

【说明】两个函数都返回读取的字符。字符马上就可以使用,无需等到缓存整行之后。类似功能键和方向键这些特殊键都使用两个字符组成的序列表示:一个0字符随后跟一个按键的扫描码。【参见】getpass,cgets,cscanf,kbhit,ungetch,putchar,getc getpass

【功能】读入口令。

【原型】char *getpass(const char *prompt)【位置】conio.h

【说明】返回一个指针,指向这次调用覆盖的一个静态字符串。【参见】getch gettext

【功能】从文本模式的屏幕上将文本拷贝至内存中。

【原型】int gettext(int left,int top,int right,int bottom,void *destin)【位置】conio.h

【说明】坐标值与屏幕相关,左上角为(1,1)。如果成功则返回一个非0值。【参见】puttext,movetext gettextinfo 【功能】得到文本模式的视频信息。

【原型】void gettextinfo(struct text_info *r)【位置】conio.h

【说明】结果以inforec的形式返回。

【参见】texttr,textbackground,textcolor,textmode,wherex,wherey,window gotoxy 【功能】在文本窗口中定位光标。【原型】void gotoxy(int x,int y)【位置】conio.h

【参见】wherex,wherey,window highvideo 【功能】选择高密度的文本字符。【原型】void highvideo(void)【位置】conio.h

【说明】影响随后的文本窗口函数调用,例如putch和cprintf。【参见】lowvideo,normvideo,textcolor,gettextinfo,cputs,putch insline 【功能】在文本窗口的当前光标位置插入空白行。【原型】void insline(void)【位置】conio.h

【说明】当前光标位置的下一行依次向下推,最后一行消失。【参见】clreol,delline,window kbhit 【功能】检查最近的键盘输入。【原型】int kbhit(void)【位置】conio.h

【说明】如果存在键盘输入,则kbhit返回一个非0整数。【参见】getc

Turbo C函数

lowvideo 【功能】 为文本窗口输出选择低密度的字符。【原型】void lowvideo(void)【位置】conio.h

【说明】影响随后的文本窗口函数调用,例如putch和cprintf。【参见】highvideo,normvideo movetext 【功能】将屏幕上一个矩形范围的文本拷贝至另一个矩形中(文本模式)。

【原型】int movetext(int left,int top,int right,int bottom,int destleft,int desttop)【位置】conio.h

【说明】坐标与屏幕左上角(1,1)相对应,如果操作成功则返回非0值。【参见】gettext,puttext normvideo 【功能】选择正确密度的字符。【原型】void normvideo(void)【位置】conio.h

【说明】影响随后的文本窗口函数调用,例如putch和cprintf。【参见】highvideo,lowvideo putch 【功能】在屏幕上的文本窗口中输出字符。【原型】int putch(int ch)【位置】conio.h

【说明】使用当前的颜色和显示属性,返回显示字符ch。【参见】cprintf,cputs,getch.putc.putchar prttext 【功能】将内存中的文本拷贝至屏幕上。

【原型】int puttext(int left,int top,int right,int bottom,void *source)【位置】conio.h

【说明】坐标与屏幕左上角(1,1)相对应,如果成功则返回一个非0值。【参见】gettext,movetext,window textattr 【功能】设置文本窗口函数的文本属性。【原型】void textattr(int newattr)【位置】conio.h

【参见】textclolor,textbackground textbackground 【功能】选择文本模式下的新背景颜色。

【原型】void textbackground(int newcolor)【位置】conio.h

【参见】textcolor,textattr textcolor 【功能】选择文本模式下的新字符颜色。【原型】void textcolor(int newcolor)【位置】conio.h

【参见】textbackground, textattr,highvideo,lowvideo,normvideo ungetch 6

Turbo C函数

【功能】将一个字符退回至键盘。【原型】int ungetch(int ch)【位置】conio.h

【说明】下一次调用getch或者其他控制台输入函数时,将返回ch。如果成功则返回字符ch,返回EOF。

【参见】getch textmode 【功能】更改屏幕模式(文本模式下)。【原型】void textmode(int newmode)【位置】conio.h

【说明】不能用来将图片模式更改为文本模式。【参见】initgraph,gettextinfo wherex 【功能】得到当前文本窗口中光标的水平位置。【原型】int wherex(void)【位置】conio.h

【说明】返回从1到80范围内的一个整数。【参见】wherey,gettextinfo,gotoxy wherey 【功能】得到当前文本窗口中光标的垂直位置。【原型】int wherey(void)【位置】conio.h

【说明】返回一个从1到25范围内的一个整数。【参见】wherex,gettextinfo,gotoxy window 【功能】定义激活的文本模式窗口。

【原型】void window(int left,int top,int right,int bottom)【位置】conio.h

【说明】屏幕左上角的坐标为(1,1)【参见】gettextinfo,textmode

CTYPE.H isascii 【功能】如果c为有效的ASCII字符,则返回真。【原型】isascii(c)【位置】ctype.h isalnum 【功能】如果c为字母或者数字,则返回真。【原型】isalnum(c)【位置】ctype.h isalpha 【功能】如果c为字母,则返回真。【原型】isalpha(c)【位置】ctype.h iscntrl 【功能】如果c为删除字符或者普通的控制字符,则返回真。【原型】iscntrl(c)

Turbo C函数

【位置】ctype.h isdigit 【功能】如果c为数字,则返回真。【原型】isdigit(c)【位置】ctype.h isgraph 【功能】除了不包括空格字符之外,其功能与isprint一致。【原型】isgraph(c)【位置】ctype.h islower 【功能】如果c为小写字母。则返回真。【原型】islower(c)【位置】ctype.h isprint 【功能】如果c为可打印字符,则返回真。【原型】isprint(c)【位置】ctype.h ispuct 【功能】如果c为标点符号字符,则返回真。【原型】ispuct(c)【位置】ctype.h isspace 【功能】如果c为空格、制表符、回车符、换行符、垂直制表符或者换页符时,返回真。【原型】isspace(c)【位置】ctype.h isupper 【功能】如果c为大写字母,则返回真。【原型】isupper(c)【位置】ctype.h isxdigit 【功能】如果c为十六进制数字,则返回真。【原型】isxdigit(c)【位置】ctype.h toascii 【功能】将大于127的c转换到0~127范围,只保留c的低7位。【原型】toascii(c)【位置】ctype.h _tolower 【功能】将[A~Z]范围内的字符c转换为[a~z]范围内的字符。【原型】_tolower(c)【位置】ctype.h _toupper 【功能】将[a~z]范围内的字符c转换为[A~Z]范围内的字符。【原型】_toupper(c)【位置】ctype.h

DIR.H 8

Turbo C函数

chdir 【功能】更改当前目录。

【原型】int chdir(const char *path)【位置】dir.h

【说明】成功实现之后,chdir返回一个0值。否则返回-1,同时设置errno。【参见】mkdir,rmdir findfirst 【功能】搜索磁盘目录。

【原型】int findfirst(const char *filename,struct ffblk *ffblk,int attrib)【位置】dir.h

【说明】文件路径中可以包括通配符?(匹配单个字符)和*(匹配多个字符)。如果成功返回0,没有找到匹配结果或者出错则返回-1,同时设置errno。findnext 【功能】继续执行findfirst搜索。

【原型】int findnext(struct ffblk *ffblk)【位置】dir.h

【说明】文件路径中可以包括通配符?(匹配单个字符)和*(匹配多个字符)。如果成功返回0,没有找到匹配结果或者出错则返回-1,同时设置errno。fnmerge 【功能】使用各个组成部分组建一个路径。

【原型】void fnmerge(char *path,const char *drive,const char *dir,const char *name,const char *ext)【位置】dir.h 【参见】fnsplit fnsplit 【功能】将一个路径分解成多个组成部分。

【原型】int fnsplit(const char *path,char *drive,char *dir,char *name,char *ext)【位置】dir.h

【说明】返回一个整数,由5个标志位组成。【参见】fnmerege getcurdir 【功能】得到指定驱动器的当前目录。

【原型】int getcurdir(int drive,char *directory)【位置】dir.h

【说明】drive为0表示默认驱动器

【参见】chdir,getcwd,getdisk,mkdir,rmdir getcwd 【功能】得到当前工作目录。

【原型】char *getcwd(char *buf,int buflen)【位置】dir.h,dos.h

【说明】返回一个指向buf的指针,出现错误时返回NULL,同时设置errno。【参见】getcurdir,getdisk,mkdir,chdir,rmdir getdisk 【功能】得到当前驱动器。【原型】int getdisk(void)【位置】dir.h

Turbo C函数

【说明】返回当前驱动器号,A驱动器使用0表示 【参见】getcurdir,setdisk,getcwd mkdir 【功能】创建一个目录。

【原型】int mkdir(const char *path)【位置】dir.h

【说明】成功返回0,错误则返回-1,同时设置errno 【参见】chdir,rmdir mktemp 【功能】创建一个唯一的文件名称。【原型】char *mktemp(char *template)【位置】dir.h

【说明】使用唯一的文件名称替换template,并且返回template的地址。Template必须由一个非空字符串和6个X后缀组成,例如MYFILEXXXXXX。rmdir 【功能】删除目录。

【原型】int rmdir(const char *path)【位置】dir.h

【说明】成功返回0,错误返回-1,同时设置errno。【参见】mkdir,chdir searchpath 【功能】在DOS路径中检索一个文件。

【原型】char *searchpath(const char *file)【位置】dir.h

【说明】成功则返回一个指针,指向表示文件完全路径名称的字符串,否则返回NULL。返回的字符串保存在一个静态区域内,每次重新调用都将覆盖这一区域。【参见】exec…,findfirst,open,system setdisk 【功能】设置当前磁盘驱动器。【原型】int setdisk(int driver)【位置】dir.h

【说明】drive数值为0=A,1=B,2=C,依次类推。函数返回所有可用驱动器总数。

DOS.H absread 【功能】读入绝对磁盘扇区。

【原型】int absread(int drive,int 1sect,void *buffer)【位置】dos.h

【说明】driver值为0=A,1=B,2=C,以此类推。Nsect表示读/写的扇区号码。1sect表示开始逻辑扇区(第1个为0)。Buffer表示数据区的地址。成功返回0,错误返回-1并设置errno。abswrite 【功能】写入绝对磁盘扇区。

【原型】int abswrite(int drive,int nsects,int 1sect,void *buffer)【位置】dos.h

【说明】driver值为0=A,1=B,2=C,以此类推。Nsect表示读/写的扇区号码。1sect表示开始逻辑扇区(第1个为0)。Buffer表示数据区的地址。成功返回0,错误返回-1并设置errno。allocmem 10

Turbo C函数

【功能】分配DOS内存片断。

【原型】int allocmem(unsigned size,unsigned *segp)【位置】dos.h

【说明】size表示请求的16位段落的号码,分配区域的段地址保存在*segp中(offset=0)。成功返回-1,否则返回最大可用数据块的大小,并设置_doserrno和errno。【参见】freemem bdos 【功能】MS DOS的系统调用。

【原型】int bdos(int dosfun,unsigned dosdx,unsigned dosal)【位置】dos.h

【说明】bdos的返回值为系统调用设置的AX值。【参见】bdosptr,int86,int86x bdosptr 【功能】MS DOS的系统调用。

【原型】int bdosptr(int dosfun,void *argument,unsigned dosal)【位置】dos.h

【说明】bdosptr的成功返回值为AX值,失败则返回-1,同时设置errno和_doserrno。【参见】bdos,int86,int86x country 【功能】返回与country相关的信息。

【原型】struct country *country(int xcode,struct country *cp)【位置】dos.h

【说明】返回指针参数cp,MS DOS 3.0或以上版本支持。ctrlbrk 【功能】设置控制终端的句柄。

【原型】void ctrlbrk(int(*handler)(void))【位置】dos.h

【说明】句柄函数返回0退出当前程序,否则程序将继续执行。delay 【功能】中断执行一段时间(以毫秒计算)。【原型】void delay(unsigned milliseconds)【位置】dos.h 【参见】sleep disable 【功能】禁止中断。

【原型】void disable(void)【位置】dos.h

【说明】禁止除了NMI之外的所有硬件中断。【参见】enable dosexterr 【功能】得到DOS扩展错误的信息。

【原型】int dosexterr(struct DOSERROR *eblkp)【位置】dos.h

【说明】根据最后一次DOS调用填写eblkp结构。返回exterror结构的值。dostounix 【功能】蒋时间和日期转换成为NUIX格式。

Turbo C函数

【原型】long dostounix(struct date*d,struct time *t)【位置】dos.h

【说明】返回UNIX格式的日期和时间参数(秒数从1970年1月1日(GMT)开始计算)。【参见】unixtodos _emit_ 【功能】直接在代码中插入文字。【原型】void emit(argument,…)【位置】dos.h enable 【功能】允许硬件中断。【原型】void enable(void)【位置】dos.h 【参见】disable FP_OFF 【功能】得到远端偏移地址。

【原型】unsigned FP_OFF(farpointer)【位置】dos.h

【参见】movedata,segread FP_SEG 【功能】得到远端分段地址。

【原型】unsigned FP_SEG(farpointer)【位置】dos.h

【参见】movedata,segread freemem 【功能】释放原先使用allocmem分配的DOS内存块。【原型】int freemem(unsigned segx)【位置】dos.h

【说明】成功返回0,错误返回-1,同时设置errno。【参见】allocmem,free geninterrupt 【功能】生成软件中断。【原型】

【位置】dos.h

【说明】调用之后可能所有寄存器的状态都根据调用的中断而定。注意,中断可能导致C使用的寄存器处于一种不可预见的状态之中。

【参见】int86,int86x,intdos,intdosx,bdos,bdosptr,intr,enable,disable getcbrk 【功能】得到控制中断的设置。【原型】int getcbrk(void)【位置】dos.h

【说明】如果control_break检查被关闭则返回0,如果检查被打开则返回1。【参见】setcbrk,ctrlbrk getcwd 【功能】得到当前工作目录。

【原型】char *getcwd(char *buf,int buflen)【位置】dos.h,dir.h

Turbo C函数

【说明】返回一个指向buf的指针,出现错误时返回NULL,同时设置errno。【参见】getcurdir,getdisk,mkdir,chdir,rmdir getdate 【功能】得到MS DOS日期。

【原型】void getdate(struct date *datep)【位置】dos.h

【参见】setdate,gettime,ctime getdfree 【功能】得到磁盘的剩余空间。

【原型】void getfree(unsigned char drive,struct dfree *dtable)【位置】dos.h

【说明】如果出错,则dtable结构中的df_sclus将设置为-1 【参见】getfat getdta 【功能】得到磁盘转移地址。【原型】char far *getdta(void)【位置】dos.h

【说明】返回一个指针,指向当前的磁盘转移地址。【参见】struct,fcb,setdta getfat 【功能】得到指定驱动器的文件分配表信息。

【原型】void getfat(unsigned char driver,struct fatinfo *dtable)【位置】dos.h

【参见】getdfree,getfatd getfatd 【功能】得到文件分配表信息。

【原型】void getfatd(struct fatinfo *dtable)【位置】dos.h

【参见】getdfree,getfat getftime 【功能】得到文件的日期和时间。

【原型】int getftime(int handle,struct ftime *fftimep)【位置】dos.h

【说明】成功返回0,错误则返回-1,同时设置errno 【参见】setftime,open getpsp 【功能】得到程序分段的前缀。【原型】unsigned getsp(void)【位置】dos.h

【说明】适用于MS DOS 3.0或者更新的版本。【参见】_psp,getenv gettime 【功能】得到系统时间。

【原型】void gettime(struct time *timep)【位置】dos.h

【参见】settime,getdate

Turbo C函数

getvect 【功能】得到中断扇区。

【原型】void interrupt(*getvect(int intr_num))()【位置】dos.h

【说明】返回在intr_num中断扇区中保存的一个4字节树脂。【参见】setvect,disable,enable getverify 【功能】得到校验状态。

【原型】int getverify(void)【位置】dos.h

【说明】如果校验标志关闭则返回0,如果校验标志打开则返回1。【参见】setverify harderr 【功能】建立一个硬盘错误句柄。

【原型】void harderr(int(*(handler)))【位置】dos.h

【说明】当MS DOS出现致命错误(int 0x24)时,掉用句柄指向的函数。【参见】hardresume.hardretn,longjmp hardresume 【功能】硬件错误句柄函数。

【原型】void hardresume(int axret)【位置】dos.h

【说明】harderr建立的错误句并可以将执行控制权返回给通过这个函数发布致命错误的MS DOS程序。Axret中的数值返回给MS DOS(0表示忽略,1表示重试,2表示退出)【参见】hardretn hardretn 【功能】硬件错误句柄函数。

【原型】void hardretn(int retn)【位置】dos.h

【说明】调用该函数之后,harderr建立的错误句柄可以直接返回应用程序。Retn中的数值返回到用户程序中,覆盖生成致命错误的MS DOS函数返回的正常值。【参见】hardresume inp 【功能】从硬件端口读取一个字节。【宏原型】int inp(int portid)【位置】dos.h

【参见】inport,inporth inport 【功能】从硬件端口读取一个词。【原型】int inport(int portid)【位置】dos.h

【参见】inportb,outport inportb 【功能】从硬件端口读取一个字节。

【原型】unsigned char inportb(int portid)【位置】dos.h

Turbo C函数

【参见】inport,outportb int86 【功能】常用的8086软件中断。

【原型】int int86(int intno,union REGS *inregs,union REGS *outregs)【位置】dos.h

【说明】该函数将保存在inregs中的数值装载到CPU寄存器中,发出中断intno,然后在outregs中保存结果CPU寄存器。【参见】int86x,intdos,intr int86x 【功能】常用的8086软件中断接口。【原型】int int86x(int intno,union REGS *inregs,union REGS *outregs,struct SREGS *segregs)【位置】dos.h 【说明】该函数将inregs和segregs中的数值装载到CPU寄存器中,发布中断intno,然后在outregs和segregs中保存最终的CPU寄存器数值。【参见】int86,intdosx,intr intdos 【功能】常用的MS DOS中断接口。

【原型】int intdos(union REGS *inregs,union REGS *outregs)【位置】dos.h

【说明】该函数将inregs中保存的数值装载到CPU寄存器中,发布MS DOS中断(int 33或者0x21),然后在outregs中保存最终的CPU寄存器树脂。【参见】indosx,int86,intr,bdos,bdosptr intdosx 【功能】常用的MS DOS中断接口。

【原型】int intdosx(union REGS *inregs,union REGS *outregs,struct SREGS *segregs)【位置】dos.h

【说明】intdosx将inregs和segregs中的数值装载到CPU寄存器中,发布DOS中断(int 0x21),然后在outregs/segregs中保存最终的CPU寄存器数值。【参见】intdos,int86x,intr,bdos,bdosptr intr 【功能】转换8086软件中断的借口。

【原型】void intr(int intno,struct REGPACK *preg)【位置】dos.h

【说明】该函数将preg中保存的数值装载到CPU寄存器中,发布中断intno,然后在preg中保存结果CPU寄存器的数值。

【参见】int86,int86x,intdos keep 【功能】程序退出运行,但是继续驻留内存。

【原型】void keep(unsigned char status,unsigned size)【位置】dos.h

【说明】该函数没有返回。它只是退到DOS状态,同时在status中保存返回值,但是程序仍然驻留在内存中。程序在中断运行之前被设置成为size大小的段落,剩余的程序内存则返回给DOS。【参见】ABORT,EXIT,EXEC,SPAWN,SYSTEM MK_FP 【功能】创建一个远端指针。

【原型】void far *MK_FP(se,off)

Turbo C函数

【位置】dos.h

【参见】movedata,segread nosound 【功能】关闭PC喇叭。

【原型】void nosound(void)【位置】dos.h

【参见】sound,delay outp 【功能】在硬件端口写一个字节。

【宏原型】int outp(int portid,int byte_value)【位置】dos.h

【参见】outport,outportb outport 【功能】在硬件端口输出一个词。

【原型】void outport(int portid,int value)【位置】dos.h

【参见】inport,outportb outportb 【功能】在硬件端口输出一个字节。

【原型】void outportb(int portid,unsigned char value)【位置】dos.h

【参见】inportb,outport parsfnm 【功能】解析文件名称,然后创建文件控制块(FCB)。

【原型】char *parsfnm(const char *cmdline,struct fcb *fcb,int option)【位置】dos.h

【说明】成功解析一个文件名称之后,parsfnm返回一个指针,指向文件名称末尾的下一个字节。如果在解析文件名称时出现任何错误,则返回0。peek 【功能】返回由segment:offset指定内存位置中的词。【原型】int peek(unsigned segment,unsigned offset)【位置】dos.h

【参见】peekb,poke peekb 【功能】返回由segment:offset指定内存位置中的字节。【原型】char peekb(unsigned segment,unsigned offset)【位置】dos.h

【参见】peek,pokeb poke 【功能】在由segment:offset指定内存位置中保存一个整数值。【原型】void poke(unsigned segment,unsigned offset,int value)【位置】dos.h

【参见】peek,pokeb pokeb 【功能】存值到一个指定存储单元。

【原型】void pokeb(unsigned segment,unsigned offset,int value)

Turbo C函数

【位置】dos.h 【参见】peek,poke randbrd 【功能】读取随即数据块。

【原型】int randbrd(struct fcb *fcb,int rcnt)【位置】dos.h

【说明】根据randbrd操作的结果,将返回如下数值。0 读入所有记录。到达文件结尾,已经读入最后一条记录。2 循环读入记录。到达文件结尾,最后一条记录尚未读入。【参见】randwr randbwr 【功能】使用文件控制块(FCB)随机写入数据块。【原型】int randbwr(struct fcb *fcb,int rcnt)【位置】dos.h

【说明】根据randbwr操作的结果,将返回如下数值。0 写入所有记录。没有足够的空间写入。2 循环写入。【参见】randbrd segread 【功能】读入段寄存器。

【原型】void segread(struct SREGS *segp)【位置】dos.h

【参见】FP_OFF,intdosx,int86x setblock 【功能】改变原先分配的数据块大小。

【原型】int setblock(unsigned segx,unsigned newsize)【位置】dos.h 【说明】对调用allocmem函数分配的数据块使用。成功时返回-1。如果出现错误,则返回可能出现的最大数据块的大小,并且设置_doserrno。【参见】allocmem,freemem setcbrk 【功能】设置控制中断。

【原型】int setcbrk(int cbrkvalue)【位置】dos.h

【说明】如果cbrkvalue等于1,则每次系统调用都需要检查Ctrl-Break。如果等于0,则只在控制台、打印机和通信I/O调用地进行检查。返回值通过cbrkvalue传递。setdate 【功能】设置MS DOS日期。

【原型】void setdate(struct fate *date *datep)【位置】dos.h

【参见】settime,getdate setdta 【功能】设置磁盘转换地址。

Turbo C函数

【原型】coid setdta(char far *dta)【位置】dos.h settime 【功能】设置系统时间。

【原型】void settime(struct time *timep)【位置】dos.h

【参见】getdate,gettime setvect 【功能】设置中断扇区入口。

【原型】void setvect(int intreeuptno,void interrupt(*isr)())【位置】dos.h

【说明】isr指向出现中断号码为interuptno的中断时调用的函数。如果isr为一个C函数,就应当使用interrupt关键字进行定义。【参见】getvect setverify 【功能】设置校验状态。

【原型】void setverify(int value)【位置】dos.h

【说明】如果value等于1,则每次磁盘写操作之后都将进行一次操作以便确保正确结果(0则表示不在随后进行读操作)。【参见】getverify sleep 【功能】程序执行挂起一段时间。

【原型】void sleep(unsigned seconds)【位置】dos.h 【参见】delay sound 【功能】将PC喇叭打开,并且设置到某个频率。【原型】void sound(unsigned frequency)【位置】dos.h

【说明】频率以赫兹为单位(每秒的圈数)。【参见】nosoubd,delay unixtodos 【功能】将UNIX格式的日期和时间转换成DOS格式。

【原型】void unixtodos(long time,struct date *d,struct time *t)【位置】dos.h 【参见】dostounix unlink 【功能】删除一个文件。

【原型】int unlink(const char *filename)【位置】dos.h,io.h,stdio.h

【说明】如果filename指定的文件属性为只读,泽unlink操作失败。首先需要调用chmod函数改变文件属性。成功返回0,错误返回-1。【参见】chmod,remove

FLOAT.H _clear87 18

Turbo C函数

【功能】清除浮点状态。

【原型】unsigned int _clear87(void)【位置】float.h

【说明】返回值的位表示旧的浮点状态。有关状态的详细解释,参见float.h文件中定义的常量。【参见】_fpreset,_status87 _control87 【功能】改变浮点控制词。

【原型】unsigned int _control87(unsigned int new,unsigned int mask)【位置】float.h

【说明】如果mask中的某一位为1,则new中的相应位保持控制词中相同位的新数值。如果mask位0,则说明控制词没有改变。

【参见】_clear87,_fpreset,status87,CWDEFAULT _fpreset 【功能】重新初始化浮点数学包。【原型】void _fpreset(void)【位置】float.h

【说明】该函数必须与exec、spawn、system等函数联合使用,因为子进程可能改变父进程的浮点状态。_status87 【功能】得到浮点状态。

【原型】unsigned int _status87(void)【位置】float.h

【说明】返回值的位说明了浮点状态。【参见】_clear87,_control87,_fpreset

GRAPHICS.H bar 【功能】画出一条栏目。

【原型】void far bar(int left,int top,int right,int bottom)【位置】graphics.hgraphics.h

【参见】bar3d,setfillstyle,rectangle bar3d 【功能】画出一条3-D栏目。

【原型】void far bar3d(int left,int top,int right,int bottom,int depth,int topflag)【位置】graphics.h 【参见】bar circle 【功能】以(x,y)为圆心按照指定的半径画出一个圆。【原型】void far circle(int x,int y,int radius)【位置】graphics.h 【参见】arc cleardevice 【功能】清除图形画面。

【原型】void far cleardevice(void)【位置】graphics.h 【参见】clearviewport clearviewport

Turbo C函数

【功能】清除当前可视区域。【原型】clearviewport(void)【位置】graphics.h

【参见】setviewport,cleardevice closegraph 【功能】关闭图形系统。

【原型】void far closegraph(void)【位置】graphics.h 【参见】initgraph detecgraph 【功能】通过检查硬件确定使用的图形驱动程序和模式。

【原型】void far detectgraph(int far *graphdriver,int far *graphmode)【位置】graphics.h

【参见】initgraph,graphresult drawpoly 【功能】画出一个多边形的轮廓。

【原型】void far drawpoly(int numpoints,int far polypoints[])【位置】graphics.h

【说明】polypoints中包括一共numpoints对数值。其中每一对都给出了多边形中一个顶点的x和y值。

【参见】fillpoly ellipse 【功能】画出一条椭圆形的圆弧。

【原型】void far ellipse(int x,int y,int stangle,int endangle,int xradius,int yradius)【位置】graphics.h

【说明】中心点在(x,y),stangle和endangle表示一角度为单位的起始角和终止角。Xradius和yradius表示水平轴和垂直轴。【参见】arc,circle,fillellipse fillellipose 【功能】画出椭圆形圆弧,并填充。

【原型】void far fillllipse(int x,int y,int xradius,int yradius)【位置】graphics.h

【说明】使用(x,y)作为中心点,然后使用当前的填充模式填充圆弧。Xradius和yradius表示水平轴和垂直轴。

【参见】arc,circle,ellipse,pieslice fillpoly 【功能】画出一个多边形,并填充。

【原型】void far fillpoly(int numpoints,int far polypoints[])【位置】graphics.h 【说明】polypoints中包含有numpoints对数值。其中每一对给出了多边形一个顶点的x值和y值。【参见】drawpoly,fill_patterns,floodfill,graphresult,setfillstyle floodfill 【功能】填充一个有界区域范围。

【原型】void far floodfill(int x,int y,int border)【位置】graphics.h

【参见】drawpoly,fillpoly,fill_patterns,graphresult,setfillstyle

Turbo C函数

getarccoords 【功能】得到最后一次调用arc的坐标值。

【原型】void far getaerccoords(struct arccoordstype far *arccoords)【位置】graphics.h 【参见】arc getaspectratio 【功能】得到当前图形模式的纵横比。

【原型】void far getaspectratio(int far *xasp,int far *yasp)【位置】graphics.h

【说明】are及类似函数使用纵横比令圆圈更加圆,而不会像椭圆。Yasp应当为10000。当象素为平方并且<10000时,xasp使用10000数值。【参见】arc,setaspectratio getbkcolor 【功能】返回当前背景颜色。

【原型】int far getbkcolor(void)【位置】graphics.h

【参见】setbkcolor,getcolor,getpalette getcolor 【功能】返回当前画笔的颜色。【原型】int far getcolor(void)【位置】graphics.h

【参见】getbkcolor,setcolor,getmaxcolor,getpalette getdefaultpalette 【功能】返回调色板定义结构。

【原型】struct palettetype *far getdefaultpalette(void)【位置】graphics.h

【说明】返回一个指针,指向调用initgraph初始化时,当前驱动程序的默认调色板结构。【参见】getpalette,initgraph getdrivername 【功能】返回一个指针,指向当前图形驱动程序的名称。【原型】char *far getdrivername(void)【位置】graphics.h

【说明】返回的指针指向标识当前驱动器程序的字符串,从而可以探测到硬件适配器。【参见】initgraph getfillpattern 【功能】将用户定义的填充模式复制到内存中。

【原型】void far getfillpattern(char far *pattern)【位置】graphics.h

【参见】getfillsettings,setfillpattern,fill_patterns getfillsettings 【功能】得到当前填充模式及其颜色的有关信息。

【原型】void far getfillsettings(struct fillsettingstype far *fillinfo)【位置】graphics.h

【参见】floodfill, fillpoly, setfillstyple, pieslice, setfillpattern, bar3d, bar, getfillpattern getgraphmode

Turbo C函数

【功能】返回当前图形模式。

【原型】int far getgraphmode(void)【位置】graphics.h

【说明】必须先调用initgraph或者setgraphmode。【参见】setmoderange,restorectrtmode getmage 【功能】将制定区域的位图保存到内存中。

【原型】void far getimage(int left,int top,int right,int bottom,void far *bitmap)【位置】graphics.h

【参见】imagesize,putimage getlinesettings 【功能】得到当前的直线样式、模式和粗细。

【原型】void far getlinesettings(struct linesettingstype far *lineinfo)【位置】graphics.h 【参见】setlinestyle getmaxcolor 【功能】返回最大颜色值。

【原型】int far getmaxcolor(void)【位置】graphics.h

【参见】getbcolor,getpalette,getcolor,setcolor getmaxmode 【功能】返回当前驱动程序的最大图形模式号。【原型】int far getmaxmode(void)【位置】graphics.h

【说明】getmaxmode可以得到当前装载的图形驱动程序的最大模式号。适用于所有驱动程序—包括Borland驱动程序及其他驱动程序。【参见】getmoderange getmaxx 【功能】返回画面坐标的最大x值。【原型】int far getmaxx(void)【位置】graphics.h 【参见】getx getmaxy 【功能】返回画面坐标的最大y值。【原型】int far getmaxy(void)【位置】graphics.h 【参见】getx getmodename 【功能】返回指针,指向图形模式的名称。

【原型】char *far getmodename(int mode_number)【位置】graphics.h

【说明】返回的指针指向mode_number指定模式的名称(字符串)。【参见】getmaxmode,getmoderange getmoderange 【功能】得到指定图形驱动器的模式范围。

【原型】void far getmoderange(int graphdriver,int far *lomode,int far *himode)

Turbo C函数

【位置】graphics.h

【参见】initgraph,getmaxmode,setgraphmode,getgraphmode.getpalette 【功能】得到当前调色板的有关信息。

【原型】void far getpalette(struct palettetype far *palette)【位置】graphics.h

【参见】setpalette,setallpalette,getbkcolor,getdefaultpalette,getcolor getpalettesize 【功能】返回调色板表的大小。

【原型】int far getpalettesize(void)【位置】graphics.h

【说明】getpalettesize返回当前图形驱动程序模式允许的调色板条目的数目。【参见】setpalette,setallpalette getpixel 【功能】得到某个指定向素的颜色。

【原型】unsigned far getpixel(int x,int y)【位置】graphics.h

【参见】putpixel,getimage gettextsettings 【功能】得到当前图形文字字体的有关信息。

【原型】void far gettextsettings(struct textsettingstype far *texttypeinfo)【位置】graphics.h

【参见】outtext, outtextxy, textheight, textwidth, settextjustify, settextsyle, registerbgifont getviewsettings 【功能】得到当前视窗的有关信息。

【原型】void far getviewsettings(struct viewporttype far *viewport)【位置】graphics.h

【参见】setviewport,clearviewport getx 【功能】返回当前位置的x坐标。【原型】int far getx(void)【位置】graphics.h

【说明】返回数值与视窗相关。

【参见】gety,moveto,getviewsettings gety 【功能】返回当前位置的y坐标。【原型】int far gety(void)【位置】graphics.h

【说明】返回数值与视窗相关。

【参见】getx,moveto,getviewsettings graphdefaults 【功能】将所有图形设置重值为默认值。【原型】void far graphdefaults(void)【位置】graphics.h

【参见】initgraph,setgraphmode

Turbo C函数

grapherrormsg 【功能】返回一个指针,指向错误消息字符串。【原型】char *far grapherrormsg(int errorcode)【位置】graphics.h

【说明】返回指针指向的字符串与graphresult返回值相关。【参见】graphresult _graphfreemem 【功能】用户申请重新分配图形内存。

【原型】void far _graphfreemem(void far *ptr,unsigned size)【位置】graphics.h 【说明】图形函数库中的程序调用该函数来释放内存。可以自己使用_graphgetmem和_graphfreemem函数来控制内存分配。【参见】_graphgetmem _gaphetmem 【功能】用户申请重新分配图形内存。

【原型】void far *far _graphgetmem(unsigned size)【位置】graphics.h 【说明】图形函数库中的程序调用该函数来释放内存。可以自己使用_graphgetmem和_graphfreemem函数来控制内存分配。【参见】_graphfreemem graphresult 【功能】返回最后一次失败图形操作的错误代码。【原型】int far graphresult(void)【位置】graphics.h

【说明】返回最后一次报告错误图形的错误代码,并且将错误等级重置为grOK。【参见】grapherrormsg imagesize 【功能】返回存储位图所需的字节数。

【原型】unsigned far imagesize(int left,int top,int right,int bottom)【位置】graphics.h

【说明】如果选定图形所需的大小大于等于64k-1个字节,则返回0xFFFF。【参见】getimage,putimage initgraph 【功能】初始化图形系统。

【原型】void far initgraph(int far *graphdriver, int far *graphmode, char far *pathtodriver)【位置】graphics.h

【参见】getgraphmode , closegraph , detectgraph , _graphgetmem , getdrivername , restorecrtmode,setgraphbufsize,registerbgidriver,graphresult,installuserdriver installuserdriver 【功能】按照设备驱动程序。

【原型】int far installuserdriver(char far *name,int huge(*detect)(void))【位置】graphics.h

【说明】name表示设备驱动程序的文件名称(*.bgi),detect指向initgraph使用autodetect选项调用的函数。

【参见】initgraph,registerbgidriver

Turbo C函数

installuserfont 【功能】装载一个字体文件。

【原型】int far installuserfont(char far *name)【位置】graphics.h

【说明】name表示图形函数还没有识别的字体文件(扩展名为.chr)DOS文件名称。installuserfont返回一个字体ID号。选择新字体时,使用该ID号调用settextstyle。【参见】settextstyle line 【功能】在两个指定点之间画出一条直线。【原型】lint(int x1,int y1,int x2,int y2)【位置】graphics.h

【说明】使用当前颜色、线条样式和线条粗细从(x1,y1)画一条直线到(x2,y2)。【参见】lineto,linerel,setcolor,getlinesettings linerel 【功能】从当前位置(CP)画一条一直长度的直线。【原型】linerel(int dx,int dy)【位置】graphics.h

【说明】使用当前颜色、线条样式和线条粗细。

【参见】line,lineto,setcolor,getcolor,getlinesettings lineto 【功能】从当前位置(CP)到(x,y)之间画一条直线。【原型】void far lineto(int x,int y)【位置】graphics.h

【参见】line,linerel,setcolor,getlinesettings,setwritemode moverel 【功能】从当前位置(CP)移动一段距离。【原型】moverel(int dx,int dy)【位置】graphics.h 【参见】moveto moveto 【功能】从当前位置(CP)移动到(x,y)点。【原型】void far moveto(int x,int y)【位置】graphics.h 【参见】moverel outtext 【功能】在视窗中(图形模式)显示一个字符串。【原型】void far outtext(char far *textstring)【位置】graphics.h

【参见】gettextsettings,texthright,textwidth,outtextxy outtextxy 【功能】在指定位置(图形模式)发送一个字符串。

【原型】void far outtextxy(int x,int y,char far *textstring)【位置】graphics.h

【参见】gettextsettings,textherght,textwidth,outtext pieslice 【功能】画出扇形区并加以填充。

Turbo C函数

【原型】void far pieslice(int x,int y,int stangle,int endangle,int radius)【位置】graphics.h

【参见】setfillstyle,sector,fill_patterns,fillellipse,graphresult putimage 【功能】在屏幕上输出一副位图。

【原型】void far putimage(int left,int top,void far *bitmap,int top)【位置】graphics.h 【说明】bitmap指向一副位图,该位图通常由getimage函数创建。Op的数值说明如何在(left,top)点将图像与区域中的当前内容结合起来。【参见】getimage putpixel 【功能】在指定点上画一个像素。

【原型】void far putpixel(int x,int y,int pixelcolor)【位置】graphics.h

【参见】getpixel,putimage rectangle 【功能】画出一个矩形(图形模式)。

【原型】void far rectangle(int left,int top,int right,int bottom)【位置】graphics.h

【说明】使用当前线条样式、线条粗细和颜色。【参见】bar,setlinestyle,setcolor registerbgidriver 【功能】注册链入的图形驱动程序。

【原型】int registerbgidriver(void(*driver)(void))【位置】graphics.h

【说明】通知图形系统链接时设备驱动程序指向的参数和驱动程序。【参见】initgraph,registerbgifont,installuserdriver registerbgifont 【功能】注册链入的字体代码。

【原型】int registerbgifont(void(*font)(void))【位置】graphics.h

【说明】通知图形系统连接时指向的字体。【参见】initgraph,registerbgidriver restorecrtmode 【功能】将屏幕模式恢复到前一次initgraph的设置。【原型】void far restorecrtmode(void)【位置】graphics.h

【参见】initgraph,setgraphmode sector 【功能】画出椭圆形的扇形区并加以填充。

【原型】void far sector(int x,int y,int stangle,int endangle,int xradius,int yradius)【位置】graphics.h

【说明】x和y定义出中心点,stangle和endangle则定义起始和终止角。Xradius和yradius表示水平和垂直半径。

【参见】pieslice,setfillstyle setactivepage 26

Turbo C函数

【功能】为图形输出设置活动页面。

【原型】void far setactivepage(int page)【位置】graphics.h 【说明】后续的图形输出就指向该显示页面。该页面可能不是实际显示的可视页面。【参见】setvisualpage setallpalette 【功能】将所有调色板的颜色改为指定颜色。

【原型】void far setallpalette(struct palettetype far *palette)【位置】graphics.h

【参见】setpalette,getpalettesize,getpalette,setcolor,setbkcolor,graphresult setaspectratio 【功能】设置图形模式的纵横比。【原型】void far setaspectratio 【位置】graphics.h

【说明】are及类似函数使用纵横比令圆圈更加圆,而不会像椭圆。yasp应当为10000。当象素为平方并且<10000时,xasp使用10000数值。【参见】getaspectratio setbkcolor 【功能】使用调色板设置当前的背景颜色。【原型】void far setbkcolor(int color)【位置】graphics.h

【参见】setpalette,setcolor,getbkcolor setcolor 【功能】设置当前画笔颜色。

【原型】void far setcolor(int color)【位置】graphics.h

【参见】getcolor,setbkcolor,setpalette,graphresult setfillpattern 【功能】选择一个用户自定义的填充模式。

【原型】void far setfillpattern(char far *upattern,int color)【位置】graphics.h

【说明】upattern指向一个8字节的区域,其中定义了一个8*8位的模式。【参见】fill_patterns,getfillpattern,getfillsettings,setfillstyle setfillstyle 【功能】设置填充模式和颜色。

【原型】void far setfillstype(int pattern,int color)【位置】dos.h

【参见】get,fillstype setgraphbufsize 【功能】改变内部图形缓冲区的大小。

【原型】unsigned far setgraphbufsize(unsigned bufsize)【位置】graphics.h

【说明】必须在调用initgraph之前调用该函数。【参见】initgraph,_graphgetmem setgraphmode 【功能】系统设置为图形模式,同时清屏。

Turbo C函数

【原型】void far setgraphmode(int mode)【位置】graphics.h

【参见】initgraph,getgraphmode,restorecrtmode,graphresult setlinestyle 【功能】设置当前的线条样式、宽度或者模式。

【原型】void far setlinestyle(int linestyle,unsigned upattern,int thickness)【位置】graphics.h 【说明】可以设置使用line,lineto,tectangle,drawpoly,aec,circle,ellipse,pieslice等函数画的所有线条样式。

【参见】getlinesettings,graphresult setpalette 【功能】改变一种调色板颜色。

【原型】void far setpalette(int colornum,int color)【位置】graphics.h

【参见】getpalette, graphresult, setallpalette, getpalettesize, setcolor, setrgbcolor, setbkcolor setrgbcolor 【功能】为VGA和IBM-8514驱动程序设置调色板条目。

【原型】void far setrgbcolor(int colornum,int red,int green,int blue)【位置】graphics.h

【说明】colornum表示需要设置的调色板条目,red、green和blue用来定义颜色。【参见】setpalette,setrgbpalette setrgbpalette 【功能】为IBM-8514图形卡定义颜色

【原型】void far setrgbpalette(int colornum,int red,int green,int blue)【位置】graphics.h

【说明】colornum表示需要载入的调色板条目,从0~255之间的数字,red、green和blue负责定义颜色。这些数值仅仅使用低位字节,而且只有最重要的6位载入调色板。【参见】setrgbcolor,setpalette settextjustify 【功能】设置图形模式下的文本对齐方式。

【原型】void far settextjustify(int horiz,int vert)【位置】graphics.h

【说明】该函数影响outtext等函数输出的文本,是文本在水平和垂直方向对齐。settextstyle 【功能】设置当前文本属性。

【原型】void far settextstyle(int font,int direction,int charsize)【位置】graphics.h

【参见】settextjustify,installuserfont,gettextsettings,graphresult setusercharsize 【功能】用户为渐入字符自定义的字符放大因子。

【原型】void far setuserchasize(int multix,int divx,int multy,int divy)【位置】graphics.h

【参见】gettextsettings,graphresult setviewport 【功能】设置图形输出的当前视口。

Turbo C函数

【原型】void far setviewport(int left,int top,int right,int bottom,int clip)【位置】graphics.h

【参见】getviewsettings,graphresult setvisualpage 【功能】设置可视图形页码。

【原型】void far setvisualpage(int page)【位置】graphics.h

【说明】有些显示适配器存在多个内存页面,可视页面是真正在屏幕上显示的页面。图形输出函数将输出写入由setactivepage定义的活动页面中。【参见】setactivepage,graphresult setwritemode 【功能】设置图形画线模式。

【原型】void far setwritemode(int mode)【位置】graphics.h

【说明】如果mode为0,则线条覆盖屏幕上当前的内容。如果mode为1,那么线条向素和已经在屏幕上的象素之间执行一个异域操作(XOR)。【参见】lingto textheight 【功能】以象素位单位,返回一个字符串的高度。【原型】int far textheight(char far *textstring)【位置】graphics.h

【说明】textwidth与图形函数一起使用,例如outtext 【参见】gettextsettings,textwidth,outtext textwidth 【功能】以象素位单位,返回一个字符串的宽度。【原型】int far textwidth(char far *textstring)【位置】graphics.h

【说明】textwidth与图形函数一起使用,例如outtext 【参见】gettextsettings,textheight,outtext

IO.H access 【功能】 确定文件是否可以访问。

【原型】int access(const char *filename,int amode)【位置】io.h

【说明】amode=0检查文件是否存在 amode=2检查文件是否有写权限

如果允许执行请求的访问,则返回0;否则返回数值-1,并且设置errno _chmod 【功能】改变访问模式。

【原型】int _chmod(const char *filename,int func[,int attrib])【位置】io.h

【说明】如果func等于0,则_chmod返回文件属性;如果func等于1,则设置属性。成功完成之后,_chmod返回文件属性;否则返回数值-1,并设置errno 【参见】chmod chomd 【功能】改变访问模式。

Turbo C函数

【原型】int chmod(const char *filename,int amode)【位置】io.h

【说明】成功改变文件访问模式之后,chmode返回0;否则chmode返回数值-1 【参见】_chmod chsize 【功能】改变文件大小。

【原型】int chsize(int handle,long size)【位置】io.h

【说明】成功则chsize返回0,失败则返回-1,同时设置errno 【参见】cheat fopen _close 【功能】关闭文件句柄。

【原型】int _close(int handle)【位置】io.h

【说明】成功完成之后,close返回0;否则返回-1,同时设置errno 【参见】close close 【功能】关闭文件句柄。

【原型】int close(int handle)【位置】io.h

【说明】成功完成之后,close返回0;否则返回-1,同时设置errno 【参见】_close _creat 【功能】创建一个新文件,或者覆盖一个旧文件。【原型】int _creat(const char *path,int attrib)【位置】io.h

【说明】creat按照_fmode规定的模式打开文件。_creat则总是按照二进制模式打开文件。成功完成之后,返回新文件句柄;否则返回-1,同时设置errno 【参见】creat creat 【功能】创建一个新文件,或者覆盖一个旧文件。【原型】int creat(const char *path,int attrib)【位置】io.h

【说明】creat按照_fmode规定的模式打开文件。_creat则总是按照二进制模式打开文件。成功完成之后,返回新文件句柄;否则返回-1,同时设置errno 【参见】_creat creatnew 【功能】创建一个新文件。

【原型】int creatnew(const char *path,int attrib)【位置】io.h

【说明】creatnew与_creat的功能基本一致,但是当文件已经存在时,creatnew将返回一个错误。该函数使用于MS DOS 3.0或者更新的版本 creattemp 【功能】在文件名指定的目录中创建一个文件。

【原型】int creattemp(const char *path,int attrib)【位置】io.h

Turbo C函数

【说明】该函数与_creat类似,但是文件名称为路径名称,必须以结束。文件名称中应当包括完整的文件名。该函数使用于MS DOS 3.0或者更新的版本 【参见】creat,_creat dup 【功能】复制一个文件句柄。【原型】int dup(int handle)【位置】io.h

【说明】成功完成之后,dup返回一个新文件的句柄;否则dup返回-1,同时设置errno 【参见】dup2 dup2 【功能】复制一个文件句柄oldhandle,新文件句柄为newhandle。【原型】int dup2(int oldhandle,int newhandle)【位置】io.h

【说明】成功返回0,错误返回-1 【参见】dup eof 【功能】检查文件结尾标志。【原型】int eof(int handle)【位置】io.h

【说明】该函数的返回值及其含义如下: 返回值 含义 1 文件结束 0 文件没有结束-1 出错,设置errno

【参见】ferror,perror,EOF filelength 【功能】得到文件大小的字节数。

【原型】long filelength(int handle)【位置】io.h

【说明】出现错误时返回-1,同时设置errno 【参见】open,lseek gettime 【功能】得到文件的日期和时间。

【原型】int gettime(int handle,struct ftime *fftimep)【位置】io.h

【说明】成功返回0,错误则返回-1,同时设置errno 【参见】setftime,open loctl 【功能】控制I/O设备。

【原型】int ioctl(int handle,int func[,void *argdx,int argcx])【位置】io.h

【说明】func为0或者1时,返回值表示设备信息(IOCTL调用DX)。Func数值从2到5时,返回值为实际传递的字节数。Func数值为6或者7时,返回值为设备状态。

在任何情况下如果出现错误,则返回数值-1,同时设置errno。isatty

Turbo C函数

【功能】检查设备类型。

【原型】int isatty(int handle)【位置】io.h

【说明】如果为字符设备,则isatty返回一个非0整数。lock 【功能】设置文件共享锁定,控制并发的文件访问。

【原型】int lock(int handle,long offset,long length)【位置】io.h

【说明】防止另一个程序读写访问从offset地址开始length个字节长的区域。调用成功返回0,调用失败返回-1。【参见】open,unlock lseek 【功能】移动读/写文件指针。

【原型】long lseek(int handle,long offset,int fromwhere)【位置】io.h

【说明】返回从文件起始位置开始新的文件位置,以字节为单位。错误返回01L,同时设置errno。【参见】fopen,fseek,ftell,gets,setbuf,ungetc _open 【功能】打开文件进行读写。

【原型】int _open(const char *filename,int oflags)【位置】io.h

【说明】成功完成之后,_open返回一个文件句柄,否则返回-1。【参见】open open 【功能】打开一个文件进行读写。

【原型】int open(const char *pathname,int access[,unsigned mode])【位置】io.h

【说明】成功完成之后,open返回一个文件句柄,否则返回-1,同时设置errno。【参见】close,creat,_creat,dup,fopen,lseek,_open,read,sopen,write _read 【功能】从文件中读取。

【原型】int _read(int handle,void *buf,unsigned len)【位置】io.h

【说明】返回读入的字节数,遇到文件结尾返回0,出现错误时返回-1,同时设置errno。【参见】read,_open,_write read 【功能】从文件中读取。

【原型】int read(int handle,void *buf,unsigned len)【位置】io.h

【说明】成功完成之后,返回一个整数说明缓存区中放置的字节数,如果文件在文本模式下打开,read不会计算返回读取字节数中的carriage或者Ctrl+Z字符。出现错误时返回-1,同时设置errno。【参见】_read,open,write setftime 【功能】获得文件的日期和时间。

【原型】int settime(int handle,struct ftime *ftimep)【位置】io.h

Turbo C函数

【说明】成功返回0,否则返回-1。【参见】gettime setmode 【功能】设置一个打开文件的模式。

【原型】int setmode(int handle,int amode)【位置】io.h

【说明】成功返回0,否则返回-1。【参见】open,creat sopen 【宏原型】sopen(path,access,shflag,mode)【位置】io.h

【说明】在共享模式下打开文件。可以于旧版本的Turbo C和其他编译程序兼容。【参见】open tell 【功能】得到文件指针的当前位置。【原型】long tell(int handle)【位置】io.h

【说明】返回当前文件指针的位置,出错则返回-1。【参见】fseek unlink 【功能】删除一个文件。

【原型】int unlink(const char *filename)【位置】io.h

【说明】如果filename指定的文件属性为只读,则unlink操作失败。首先需要调用chmod函数改变文件属性。

成功返回0,错误返回-1。【参见】chmod,remove unlock 【功能】释放文件共享的锁定,控制并发访问。

【原型】int unlock(int handle,long offset,long length)【位置】io.h

【说明】成功返回0,错误返回-1。【参见】lock _write 【功能】写入一个文件。

【原型】int _weite(int handle,void *buf,unsigned nbyte)【位置】io.h

【说明】返回写入的字节数目,出现错误则返回-1。【参见】write write 【功能】写入一个文件。

【原型】int weite(int handle,void *buf,unsigned nbyte)【位置】io.h

【说明】返回写入的字节数目,出现错误则返回-1。【参见】creat,open,read,_write,lseek

MATH.H

Turbo C函数

abs 【功能】得到一个整数的绝对值,abs(x)中的x表示一个int值。【原型】int abs(int x)【位置】math.h,stdlib.h acos 【功能】反余弦函数。

【原型】double acos(double x)【位置】math.h,stdlib.h 【说明】返回值从0到π。【参见】trig,hyperb asin 【功能】反正弦函数。

【原型】double asin(double x)【位置】math.h

【说明】返回值范围从-π/2到π/2 【参见】trig,hyperb stan 【功能】反正切函数。

【原型】double atan(double x)【位置】math.h

【说明】返回值范围从-π/2到π/2 【参见】trig,hyperb atan2 【功能】y/x的反正弦函数。

【原型】double atan2(double y,double x)【位置】math.h

【说明】返回值范围从-π到π 【参见】trig,hyperb atof 【功能】将一个字符串转换成浮点数。【原型】double atof(const char *s)【位置】math.h

【说明】返回s经过转换之后的值,如果s不能转换则返回0。【参见】atoi,atol,ecvt,sscanf,strtod cabs 【功能】得到一个复数的绝对值。

【原型】double cabs(struct complex znum)【位置】math.h

【说明】以双精度返回znum的绝对值。【参见】abs,fabs,labs ceil 【功能】向上取整函数。

【原型】double ceil(double x)【位置】math.h

【说明】返回一个大于等于x的最小整数。【参见】floor 34

Turbo C函数

cos 【功能】余弦函数。

【原型】double cos(double x)【位置】math.h

【说明】x表示弧度,返回值范围从-1到1。【参见】trig,hyperb cosh 【功能】双曲余弦函数。

【原型】double cosh(double x)【位置】math.h

【参见】hyperb,trig exp 【功能】计算e的x次方。【原型】double exp(double x)【位置】math.h

【参见】frexp,ldexp,log,pow fabs 【功能】得到一个浮点数的绝对值。【原型】double fabs(double x)【位置】math.h

【参见】abs,cabs,labs floor 【功能】向下取整函数。

【原型】double floor(double x)【位置】math.h

【说明】返回小于或等于x的最大整数。【参见】ceil fmod 【功能】计算x/y的余数,也就是x对y求模。【原型】double fmod(double x,double y)【位置】math.h 【参见】modf frexp 【功能】将一个双精度数分解成为尾数和指数。

【原型】double frexp(double value,int *exponent)【位置】math.h

【说明】计算出x(x<1)和n,并且value=x*(2**n)。返回尾数x,并且令*exponent指向n。【参见】exp hypot 【功能】计算直角三角形的斜边。

【原型】double hypot(double x,double y)【位置】math.h labs 【功能】长整数的绝对值。【原型】long labs(long x)【位置】math.h,stdlib.h

Turbo C函数

【参见】abs,cabs ldexp 【功能】计算value乘以2为底的exp次幂得到的数值。【原型】double ldexp(double calue,int exp)【位置】math.h

【说明】返回值x=value*pow(2,exp)【参见】exp,frexp log 【功能】对数函数ln(x)

【原型】double log(double x)【位置】math.h 【参见】exp log10 【功能】对数函数log(10x)

【原型】double log10(double x)【位置】math.h 【参见】exp matherr 【功能】用户可修改的数学错误处理程序。【原型】int matherr(struct exception *e)【位置】math.h

【说明】可以运用自己的matherr函数控制由math函数库探测器的错误句柄。

Matherr应当返回一个非0值来说明可以解决问题,否则返回0。也可以更改返回值e,通过初始化调用方的接口返回。modf 【功能】将数字分离成为整数部分和分数部分。【原型】double modf(double x,double *ipart)【位置】math.h

【说明】将参数值分解成两部分:整数部分和分数部分。将整数部分保存在*ipart中,返回分数部分。poly 【功能】根据参数生成一个多项式。

【原型】double poly(double x,int degree,double coeffs[])【位置】math.h

【说明】在x中返回一个多项式的数值,次数为n,系数为coeffs[0],…coeffs[n]。【参见】 pow 【功能】幂函数,x的y次幂。

【原型】double pow(double x,double y)【位置】math.h pow10 【功能】幂函数,10的p次幂。【原型】double pow10(int p)【位置】math.h sin 【功能】正弦函数。

Turbo C函数

【原型】double sin(double x)【位置】math.hmath.h

【说明】x表示弧度,返回值范围为-1到1。【参见】trig sinh 【功能】双曲正弦函数。

【原型】double sinh(double x)【位置】math.h 【参见】hyperb,trig sqrt 【功能】计算平方根。

【原型】double sqrt(double x)【位置】math.h

【说明】返回x的平方根。tan 【功能】正切函数。

【原型】double tan(double x)【位置】math.h

【说明】x表示弧度,返回x的正切值。【参见】trig,hyperb tanh 【功能】双曲正切函数。

【原型】double tanh(double x)【位置】math.h

【说明】返回x的双曲正切值。【参见】typerb,trig

MEM.H memccpy 【功能】从scr位置拷贝n个字节到dest位置。

【原型】*memccpy(void *dest,const void *src,int c,size_t n)【位置】mem.h,string.h

【说明】该函数拷贝一个与c匹配的字节之后将停止操作,返回一个指针,指向dest位置上c之后的字节;否则将返回NULL。memchr 【功能】在数组s的前n个字节中查找字符c。

【原型】void *memchr(const void *s,int c,size_t n)【位置】mem.h,string.h

【说明】返回一个指针,指向s中出现的第一个c。如果在数组s中没有出现c,则返回NULL。memcmp 【功能】比较两个长度均为n的字符串s1和s2。

【原型】int memcmp(const void *s1,const void *s2,size_t n)【位置】mem.h,string.h

【说明】如果s1小于s2,返回一个小于0的数值,如果s1等于s2则返回一个0值,如果s1大于s2则返回一个大于0的数值。memcpy 【功能】从src位置拷贝n个字节到dest位置。

Turbo C函数

【原型】*memcpy(void *dest,const void *src,size_t n)【位置】mem.h,string.h 【说明】返回dest。memicmp 【功能】比较s1和s2的前n个字节,忽略大小写差异。

【原型】int memicmp(const void *s1,const void *s2,size_t n)【位置】mem.h,string.h

【说明】如果s1小于s2,返回一个小于0的数值,如果s1等于s2则返回一个0值,如果s1大于s2则返回一个大于0的数值。memmove 【功能】从src拷贝n个字节到dest。

【原型】*memmove(void *dest,const void *src,size_t n)【位置】mem.h,string.h 【说明】返回s。memset 【功能】将s中的n个字节设置为c。

【原型】void *memset(void *s,int c,size_t n)【位置】mem.h,string.h 【说明】返回s。movedata 【功能】拷贝字节。

【原型】void movedata(unsigned srcset,unsigned crcoff,unsigned destseg,unsigned destoff,size_t n)

【位置】mem.h,string.h

【说明】从sreseg:srcoff拷贝n个字节到destseg:destseg:destoff。【参见】FP_OFF,memcpy,segread movmem 【功能】从src移动一定长度的字节到dest。

【原型】void movmem(void *src,void *dest,unsigned length)【位置】mem.h vsetmem 【功能】将某个内存范围设置为value。

【原型】void setmem(void *dest,int len,char value)【位置】mem.h,string.h 【参见】memset,strest

PROCESS.H abort 【功能】异常终止某个进程。【原型】void abort(void)【位置】stdlib.h 【参见】atexit,assert,exit exec 【功能】载入并运行另外一个程序。

【原型】int execl(char *path,char *arg0,…,NULL)

int execle(char *path,char *arg0,…,NULL,char **envp)

int execlp(char *path,char *arg0,…)

Turbo C函数

int execlep(char *path,char *arg0,…,NULL,char **envp)

int execv(char *path,char *argv[])

int execve(char *path,char *argv[],char **envp)

int execvp(char *path,char *argv[])

int execvp(char *path,char *argv[],char **envp)【位置】process.h

【说明】如果成功则exec函数不返回任何值。如果出现错误则exec函数返回-1,并且设置errno 【参见】spawn,searchpath,system exit 【功能】终止程序

【原型】void exit(int status)【位置】stdlib.h,process.h

【说明】终止程序之前,清空输出缓存,关闭文件,并且退出调用的函数 【参见】abort,atexit,_exit spawn 【功能】spawn函数允许程序运行其他文件,并且在文件运行结束之后返回控制权。成功执行之后,返回子进程的退出状态(0 表示正常终止)。如果某次子调用使用非0参数退出,则退出状态设置为一个非0值。

如果进程没有成功执行,则spawn函数将返回-1。

在使用如下这些spawn函数之前,首先需要了解将会出现多少个不同的参数。【原型】int spawnl(int mode,char *path,char *arg0,…,NULL)

int spawnle(int mode,char *path,char *arg0,…,NULL ,char **env)

int spawnlp(int mode,char *path,char *arg0,…,NULL)

int spawnlpe(int mode,char *path,char *arg0,…,NULL ,char **env)

int spawnv(int mode,char *path,char *arg[])

int spawnve(int mode,char *path,char *arg[],char **env)

int spawnvp(int mode,char *path,char *arg[])

int spawnvpe(int mode,char *path,char *arg[],char **env)【位置】process.h

【说明】每个spawn函数的结尾字母表明其使用哪一种变形。P 在DOS路径中查找子进程。L 传递固定长度的参数列表。V 传递可改变长度的参数列表。

E 传递一个env指针,允许改变子进程的环境。【参见】abort,atexit,exit,exec.system system

【功能】执行一个MS DOS 命令。

【原型】int system(const char *command)【位置】process.h,stdlib.h 【说明】command可以执行一条内部DOS命令,例如DIR、一个.COM或者.EXE程序文件,或者一个.BAT批处理文件。成功返回0,失败返回-1 【参见】searchpath

SETJMP.H longjmp 【功能】执行非本地的跳转。

【原型】void longjmp(jmp_buf jmpb,int retval)

Turbo C函数

【位置】setjmp.h

【说明】将控制权传递给调用setjmp(初始化jmpb)的语句。该点将继续向下执行,假设setjmp返回在retval中定义的数值。longjmp不能返回数值0,如果在retval中返回0,则longjmp将返回1

【参见】ctrlbrk,signal setjmp

【功能】设置非本地跳转。

【原型】int setjmp(jmp_buf jmpb)【位置】setjmp.h

【说明】保存类似寄存器数值的相关信息,以便于longjmp函数可以将控制权返回给调用setjmp之后的语句。首次调用时返回0 【参见】longjmp

SIGNAL.H raise 【功能】向执行程序发送一个信号。【原型】int raise(int sig)【位置】signal.h 【说明】程序可以使用raise给自己发送信号,执行由该信号类型设置的句并(或者默认句柄)。Sig的信号类型在signal.h中定义。【参见】signal signal 【功能】设置某个信号的句柄。

【原型】typedef void(*sigfun)(int subcode)int signal(int sig,sigfun fname)【位置】signal.h

【说明】当产生sig类型的信号时,调用fname指向的函数。信号类型在signal.h中定义。当出现例外条件,或者调用raise时才会产生信号。【参见】raise

STDIO.H clearerr 【功能】重设错误标识。

【原型】void clearerr(FILE *fp)【位置】stdio.h

【说明】重设流fp中的错误标识和文件结尾标识。【参见】eof,ferror,feof,perror fclose 【功能】关闭流。

【原型】int fclose(FILE *fp)【位置】stdio.h

【说明】成功返回0,如果出现任何错误则返回EOF。【参见】fflush,fcloseall,fopen,flushall,close fcloseall 【功能】关闭所有打开的流。【原型】int fcloseall(void)【位置】stdio.h

【说明】返回关闭的总数目,如果出现任何错误则返回EOF。

Turbo C函数

【参见】fclose,flushall fdopen 【功能】将某个流和某个文件句柄相关联。

【原型】FILE *fdopen(int handle,char *type)【位置】stdio.h

【说明】返回一个指针,指向最近打开的流,如果出现任何错误则返回NULL。【参见】fopen,open feof(f)【功能】如果流f出现错误则返回非0值。【原型】int feof(FILE *stream)【位置】stdio.h

【参见】clearerr,eof ferror(f)【功能】如果流f出现错误则返回非0值。【原型】int ferror(FILE *stream)【位置】stdio.h

【参见】clearerr,fopen,eof fflush 【功能】清空某个流。

【原型】int fflush(FILE *fp)【位置】stdio.h

【说明】如果出现任何错误则返回EOF。【参见】flushall,fclose fgetc 【功能】从流中得到字符。【原型】int fgetc(FILE *fp)【位置】stdio.h

【说明】该函数是宏getc的函数版本。【参见】fgetchar,fputc fgetchar 【功能】从stdin中得到一个字符。【原型】int fgetchar(void)【位置】stdio.h

【说明】函数是宏getchar的函数版本。fgetpos 【功能】得到文件指针的当前位置。

【原型】int fgetpos(FILE *fp,fpos_t *pos)【位置】stdio.h

【说明】*pos中保存的位置可以传递给fsetpos,从而设置文件指针。成功返回0,否则返回一个非0值。

【参见】fseek,fsetpos,ftell,tell fgets 【功能】从流中得到一个字符串。

【原型】char *fgets(char *s,int n,FILE *fp)【位置】stdio.h

【说明】成功则返回目的字符串s,错误或者遇到文件结尾则返回NULL。

Turbo C函数

【参见】fputs,gets fileno(f)【功能】返回与流f相关联的文件句柄。【宏原型】int fileno(FILE *stream)【位置】stdio.h flushall 【功能】清空所有打开的流。【原型】flushall(void)【位置】stdio.h

【说明】清空输入流的缓存区和输出流文件的输出缓存。返回一个整数,表示打开的输入输出流的数目。

【参见】fflush,fclose,fcloseall fopen 【功能】打开一个流。

【原型】FILE *fopen(const char *filename,const char *mode)【位置】stdio.h

【说明】如果成功则返回一个指针,指向最近打开的流,否则返回NULL。【参见】fclose,creat,open,dup,ferror,_fmode,rewind,setbuf,setmode fprintf 【功能】向流发送格式化输出。

【原型】int fprintf(FILE *fp,const char *format,…)【位置】stdio.h

【说明】使用格式说明符与printf相同,但是frintf向指定流fp发送输出,fprintf返回输出字节数。出现错误则返回EOF。【参见】putc,fscanf fputc 【功能】向某个流输出一个字符。【原型】int fputc(int c,FILE *fp)【位置】stdio.h

【说明】该函数是宏getc的函数版本。fputchar 【功能】向stdot输出一个字符。【原型】int fputchar(int c)【位置】stdio.h

【说明】函数是宏getchar的函数版本。fputs 【功能】向某个流输出一个字符。

【原型】int fputs(const char *s,FILE *fp)【位置】stdio.h

【说明】成功完成之后,返回最近写入的字符,否则返回EOF。【参见】fgets,puts fread 【功能】从某个流读入数据。

【原型】size_t fread(void *ptr,size_t n,FILE *fp)【位置】stdio.h

【说明】每次读入n个条目的字节大小。返回实际读入的条目数(而不是字节数)。

Turbo C函数

【参见】fopen,fwrite freopen 【功能】将一个新文件和某个打开的流相关联。

【原型】FILE *freopen(const char *filename,const char *mode,FILE *stream)【位置】stdio.h

【说明】首先关闭流。然后打开使用路径命名的文件,并且将其与流相关联。成功则返回流,失败返回NULL。【参见】fopen fscanf 【功能】从某个流执行格式化输入。

【原型】int fscanf(FILE *fp,const char *format,…)【位置】stdio.h

【说明】返回成功扫描、转换并且保存的输入字段数目,返回值中不包括没有保存的扫描字段。【参见】getc,fprintf,scanf fseek 【功能】定位某个流的文件指针。

【原型】int fseek(FILE *fp,long offset,int whence)【位置】stdio.h

【说明】offset表示与whence指定位置相对应的新位置。成功返回0,时白则返回非0值。【参见】ftell,fopen,lseek,rewind fsetpos 【功能】定位某个流的文件指针。

【原型】int fsetpos(FILE *fp,const fpos_t *pos)【位置】stdio.h

【说明】pos指向的新位置是通过上一次调用fgetpos得到的数值。成功返回0,时白返回一个非0值。

【参见】feek,fgetpos,ftell ftell 【功能】返回当前文件指针。【原型】long ftell(FILE *fp)【位置】stdio.h

【说明】成功则返回当前的文件指针位置,出现错误则返回-1L。【参见】tell,fseek,fgetpos,fsetpos fwrite 【功能】写入某个流。

【原型】size_t fwrite(const void *ptr,xiae_t n,FILE *fp)【位置】stdio.h

【说明】每次写入n个条目大小的字节,返回实际写入的条目数(而不是字节数)。【参见】fopen,fread getc 【功能】从某个流中得到一个字符。【原型】int get(FILE *fp)【位置】stdio.h

【说明】返回读入的字符。如果遇到文件尾或者出现错误,则返回EOF。【参见】fgets,fscanf,fopen,getch,getw,fread,putc,vfscanf,getchar getchar

Turbo C函数

【功能】从stdin得到字符。【原型】int getchar(void)【位置】stdio.h

【说明】成功则getchar将读入的字符转换为不加符号的int并返回。如果遇到文件结尾或者出现错误,则返回EOF。

【参见】getc,fgetchar,ungetc,scanf,putchar,getch,vscanf,getc gets 【功能】从stdin得到一个字符串。【原型】*getc(char *string)【位置】stdio.h

【说明】从stdin收集输入内容,知道发现换行符(n)为止。n不放在string中。返回一个指针,指向参数string

【参见】ferror,fopen,fread,getc,putc,scanf getw 【功能】从流中得到整数。【原型】int getw(FILE *fp)【位置】stdio.h

【说明】返回输入流中的下一个整数,如果遇到文件结尾或者出现错误则返回EOF。使用feof或者ferror校验是否遇到文件结尾或者出现错误。【参见】putw perror 【功能】系统错误消息。

【原型】void perror(const char *s)【位置】stdio.h

【说明】向stderr打印一条错误消息。首先打印参数字符串,然后打印一个冒号,然后是与当前errno数值相对应的错误消息,最后打印换行符。【参见】strerror printf 【功能】向stdout发送格式化输出。

【原型】int printf(const char *format,…)【位置】stdio.h

【说明】按照format的要求格式化数目不定的参数,然后将输出结果发送到stdout。该函数返回输出字节数,如果出现错误则返回EOF。

【参见】ecvt,puts,fprintf,scanf,putc,vptintf putc 【功能】向某个流输出一个字符。【原型】int putc(int ch,FILE *fp)【位置】stdio.h

【说明】成功则putc返回字符ch,错误则返回EOF。

【参见】fputs,fputc,fwrite,fputchar,putchar,putw,frintf,vfprintf,getc,putch putchar 【功能】向stdout输出字符。【原型】int putchar(int ch)【位置】stdio.h

【说明】成功则返回字符ch,错误则返回EOF。

【参见】puts,putw,fputchar,putc,printf,vprintf,getchar,putch 44

Turbo C函数

puts 【功能】向stdout输出一个字符串(并且添加一个换行符)。【原型】int puts(const char *s)【位置】stdio.h

【说明】成功完成之后,puts返回写入的最后一个字符;否则返回EOF。【参见】putchar,gets,fputs,cputs putw 【功能】向某个流输出一个整数。【原型】int putw(int w,FILE *fp)【位置】stdio.h

【说明】返回整数w。【参见】printf,getw remove(filename)【功能】删除一个文件,该宏翻译了对unlink的调用。【原型】int remove(filename)【位置】stdio.h 【参见】unlink rename 【功能】重命名一个文件。

【原型】int rename(const char *oldname,const char *newname)【位置】stdio.h

【说明】成功重命名文件之后,rename返回0。出现错误则返回-1,并且设置errno。rewind 【功能】重新将文件指针定位在流的开始位置。【原型】void rewind(FILE *fp)【位置】stdio.h

【参见】fseek,fopen scanf 【功能】执行从stdin的格式化输入。

【原型】int scanf(congst char *format,…)【位置】stdio.h

【说明】返回成功处理的输入字段数目。要求按照format的要求处理输入,并且将结果放在参数指向的内存位置中。

【参见】atof,getc,vfscanf,cscanf,printf,vscanf,fscanf,sscanf,vsscanf setbuf 【功能】为某个流分配缓存。

【原型】void setbuf(FILE *fp,char *buf)【位置】stdio.h

【说明】如果buf为NULL,则无法缓存I/O,否则就可以缓存。缓存区的大小为BUFSIZ字节长。【参见】fopen,setvbuf setvbuf 【功能】为某个流分配缓存。

【原型】setvbuf(FILE *fp,char *buf,int type,size_t size)【位置】stdio.h

【说明】size表示以字节为单位的缓存区大小。使用setvbuf可以为流分配一个较大的缓存区。成功返回0,否则返回一个非0值。

Turbo C函数

【参见】fopen,setbuf sprintf 【功能】向某个字符串发送格式化输出。

【原型】int sprinf(char *buffer,const char *format,…)【位置】stdio.h

【说明】返回输出的字节数。出现错误时,返回EOF。【参见】printf,fprintf sscanf 【功能】从某个字符串执行格式化输入。

【原型】int sscnaf(const char *buffer,const char *format,…)【位置】stdio.h 【说明】返回成功扫描、转换并保存的输入字段数目。如果sscanf试图读入的位置超过缓存区范围,则返回值为EOF。

【参见】scanf,fscanf _strerror 【功能】构件一条自定义的错误消息字符串。【原型】*_strerror(const char *s)【位置】stdio.h

【说明】错误消息由s、一个冒号、一个空格、最近生成的系统错误消息及一个换行符构成。S应当小于等于94个字符。返回一个指针,指向错误消息字符串。【参见】strerror strerror 【功能】返回指向错误消息字符串的指针。【原型】char *strerror(int errnum)【位置】stdio.h

【说明】返回一个指针,指向与errnum相关联的错误消息。【参见】_streeeoe,perror tmpfile 【功能】以二进制模式打开一个scratch文件。【原型】FILE *tmpfile(void)【位置】stdio.h

【说明】返回一个指针,指向临时文件创建的流。如果无法创建文件,则tmpfile返回NULL。【参见】fopen,tmpnam tmpnam 【功能】创建一个为一个文件名称。【原型】char *tmpnam(char *sptr)【位置】stdio.h

【说明】如果sptr为NULL,则tmpnam返回一个指针,指向一个内部的静态对象。否则tmpnam返回sptr。

【参见】tmpfile ungetc 【功能】将一个字符退回输入流。【原型】int ungetc(int c,FILE *fp)【位置】stdio.h

【说明】下一次对流fp调用getc(或者其他的流输入函数)时将返回c。如果执行成功,则ungetc返回退回的字符。如果操作失败则返回EOF。

Turbo C函数

【参见】getc unlink 【功能】删除一个文件。

【原型】int unlink(const char *filename)【位置】stdio.h,dos.h,io.h

【说明】如果filename指定的文件属性为只读,则unlink操作失败。首先需要调用chomd函数改变文件属性。

成功返回0,错误返回-1。【参见】chmod,remove vfprintf 【功能】使用参数列表向某个流发送格式化输出。

【原型】int vfprintf(FILE *fp,const char *format,va_list arglist)【位置】stdio.h

【说明】返回输出的字节数,如果出现错误则返回EOF。【参见】printf vfscanf 【功能】用参数列表向某个流发送格式化输入。

【原型】int vfscanf(FILE *fp,const char *format,va_list arglist)【位置】stdio.h

【说明】返回成功扫描、转换并保存的输入字段数。【参见】scanf vprintf 【功能】用参数列表从stdin执行格式化输出。

【原型】int vprintf(const char *format,va_list,arglist)【位置】stdio.h

【说明】返回输出的字节数,如果出现错误则返回EOF。【参见】printf vscanf 【功能】使用参数列表从stdin执行格式化输入。

【原型】int vscanf(const char *format,va_list arglist)【位置】stdio.h

【说明】返回成功扫描、转换并保存的输入字段数,遇到文件结尾则返回EOF。【参见】scanf vsprintf 【功能】使用参数列表向一个字符串发送格式化输入。

【原型】vsprintf(char *buffer,const char *format,va_list arglist)【位置】stdio.h

【说明】返回输出的字结束。如果出现错误则返回EOF。【参见】printf vsscanf 【功能】使用参数列表从一个字符串执行格式化输入。

【原型】int vsscanf(const char *buffer,const char *format,va_list arglist)【位置】stdio.h

【说明】返回成功扫描、转换并保存的输入字段数,如果遇到文件结尾则返回EOF。【参见】scanf,sscanf,vfscanf

STDLIB.H

Turbo C函数

abort 【功能】异常终止某个进程。【原型】void abort(void)【位置】stdlib.h,process.h 【参见】atexit,assert,exit abs 【功能】得到一个整数的绝对值,abs(x)中的x表示一个int值。【原型】int abs(int x)【位置】math.h,stdlib.h atexit 【功能】寄存器终止函数。

【原型】int atexit(atexit_t func)【位置】stdlib.h

【说明】成功返回0,失败返回非0值。【参见】exit,abort atof 【功能】将一个字符串转换成符点数。【原型】double atof(const char *s)【位置】math.h,stdlib.h

【说明】返回s经过转换之后的值,如果s不能转换则返回0。【参见】atoi,atol,ecvt,fcvt,sscanf,strtod atoi 【功能】将一个字符串转换为一个短整数。【原型】int atoi(const char 8s)【位置】stdlib.h

【说明】返回输入字符串转换后的值。如果字符串无法转换,则返回值为0。【参见】atof,atol,ecvt,sscanf,strtod atol 【功能】将一个字符串转换为一个长整数。【原型】int atol(const char *s)【位置】stdlib

【说明】返回输入字符串转换后的值。如果字符串无法转换,则返回值为0。【参见】atof,atoi,ecvt,fcvt,sscanf,strtod bsearch 【功能】两分法查找。

【原型】*bsearch(const void key,const void base,size_t width,int(fcmp)(const void,const void*))

【位置】stdlib.h 【说明】返回表中的一个符合查找关键字的条目的值。如果没有找到匹配条目,则返回0。在bsearch中,如果*elem1小于*elem2则*fcmp的返回值小于0,如果*elem1等于*elem2则返回值等于0,如果*elem1大于*elem2则返回值大于0。表必须按照升序排列。【参见】lsearch,qsort calloc 【功能】分配主存。

【原型】void *calloc(size_t nelem,size_t elsize)【位置】stdlib.h,alloc.h

Turbo C函数

【说明】为nelem数据项的每elsize个字节分别分配空间,同时在空间中保存0值。返回一个指向新分配块的指针,如果没有足够的空间则返回NULL。【参见】malloc div 【功能】两个整数相除。

【原型】div_t div(int number,int denom)【位置】stdlib.h

【说明】每个函数都返回一个结构,其中的元素由quot(商)和rem(余数)组成。Div的元素为整型。ecvt 【功能】将一个符点数转换为字符串。

【原型】char *ecvt(double value,int ndig,int *dec,int *sign)【位置】stdlib.h exit 【功能】终止程序。

【原型】void exit(int status)【位置】stdlib.h,process.h

【说明】终止程序之前,清空输出缓存,关闭文件,并且退出调用的函数。【参见】abort,atext,_exit fcvt 【功能】将一个符点数转换为字符串。

【原型】char *fcvt(double value,int ndig,int *dec,int *sign)【位置】stdlib.h free 【功能】释放通过malloc或者calloc分配的数据块。【原型】void free(void *block)【位置】stdlib.h,alloc.h

【参见】malloc,calloc,freemem gcvt 【功能】将一个符点数转换为字符串。

【原型】char *gcvt(double value,int ndig,char *buf)【位置】stdlib.h 【说明】返回buf 【参见】ecvt,fcvt gerenv 【功能】从环境变量中得到字符串。

【原型】char *getenv(const char *name)【位置】stdlib.h

【说明】成功返回一个指针,指向与name相关的数值;如果name环境中没有定义,则返回NULL。【参见】putenv,envirir itoa 【功能】将一个整数转换为字符串。

【原型】char *itoa(int value,char *string,int radix)【位置】stdlib.h

【说明】返回一个指针,指向目的字符串。【参见】ltoa labs

Turbo C函数

【功能】求长整数的绝对值。【原型】long labs(long x)【位置】math.h,stdlib.h 【参见】abs,cabs ldiv 【功能】两个长整数相除。

【原型】ldiv_t ldiv(long lnumber,long ldenom)【位置】stdlib.h

【说明】每个函数都返回一个结构,其中的元素由quot(商)和rem(余数)组成。Ldiv的元素为长整型。lfind 【功能】执行线性查找。

【原型】void *lfind(const void *key,const void *base,size_t *pnelem,size_t width, int(*fcmp)(const void*,const void*))【位置】stdlib.h

【说明】该函数使用一个用户自定义的程序(fcmp),在顺序记录的数组中查找key值。

数组中一共有pnelem个记录,每个的宽度为width字节,并且从base指向的内存位置开始。返回表中与查找关键字匹配的第1个条目的地址。如果没有找到匹配条目,则lsearch将其添加到列表结尾。如果*elem1等于*elem2则*fcmp程序必须返回0,否则返回非0。【参见】basearch,qsort _lrotl 【功能】将一个长整数向右循环。

【原型】_lrotl(unsigned long val,int count)【位置】stdlib.h

【说明】函数返回val循环count位后的数值。【参见】_rotl _lrotr 【功能】将一个长整数向左循环。

【原型】_lrotr(unsigned long val,int count)【位置】stdlib.h

【说明】函数返回val循环count位后的数值。【参见】_rolt lsearch 【功能】执行线性查找。

【原型】void *lsearch(const void *key,void *base,size_t *pnelem,size_t width,int(*fcmp)(const void*,const void*))【位置】stdlib.h

【说明】该函数使用一个用户自定义的程序(fcmp),在顺序记录的数组中查找key值。数组中一共有pnelem个记录,每个的宽度为width字节,并且从base指向的内存位置开始。

返回表中与查找关键字匹配的第1个条目的地址。如果没有找到匹配条目,则lsearch将其添加到列表结尾。如果*elem1等于*elem2则*fcmp程序必须返回0,否则返回非0。【参见】bsearch,qsort ltoa 【功能】将一个长整数转换成一个字符串。

C语言 篇6

本章是C语言程序设计的入门部分, 从整体上介绍C语言的起源和发展,讲述C语言的特点、结构和基础语法要点。

1.1 C语言概述

1.1.1 C语言的发展

C语言是界上广泛流行的的程序设计语言之一,它适合于作系统描述语言,即用来写系统软件,也可以用来写应用软件。

早期的操作系统等系统软件主要是用汇编语言编写的(包括UNIX操作系统在内)。但是汇编语言存在明显的缺点,即可读性和可移植性都比较差,为了提高可读性和可移植性,最好改用高级语言,但是一般高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作,例如对内存地址的操作、位操作等)。人们希望能找到一种既具有一般高级语言特性,又具有低级语言底层操作能力的语言,集它们的优点于一身,于是C语言在70年代初应运而生了。1978年由美国电话电报公司(AT&T)的贝尔实验室正式发表了C语言,同时由B.W.Kernighan和D.M.Ritchit合著了影响深远的“THE C PROGRAMMING LANGUAGE”一书,通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,许多开发机构推出了自己的C语言版本,这些版本之间的微小差别不时引起兼容性上的问题,后来由美国国家标准学会ANSI(American National Standard Institute)在各种C语言版本的基础上制定了一个C 语言标准,于1983年发表。通常称之为ANSI C。1987年ANSI又公布了新标准——87 ANSI C。目前广泛流行的各种C编译系统都是以它为基础的。

早期的C语言主要是用于UNIX系统,由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C语言开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为当代最优秀的程序设计语言之一。

在C的基础上,1983年又由贝尔实验室的Bjarne Strou-strup推出了C++。C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C++提出了一些更为深入的概念,它所支持的这些面向对象的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与传统结构程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度。但是,C是C++的基础,C++语言和C语言在很多方面是兼容的。因此,掌握了C语言,再进一步学习C++就能以一种熟悉的语法来学习面向对象的语言,从而达到事半功倍的目的。

目前最流行的C语言有以下几种: ·Microsoft C 或称 MS C ·Borland Turbo C 或称 Turbo C ·AT&T C 这些C语言版本不仅实现了ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。这些不同版本C语言之间有一定的差别,但对初学者来说,不必过多理会他们的差别,重在理解C语言的特点和编程方法。本书的叙述以TURBO C为准。

1.1.2 C语言的特点

C语言是一种通用、灵活、结构化、标准化、使用广泛的编程语言,能完成用户的各种任务,特别适合进行系统程序设计和对硬件进行操作的场合。C语言本身不对程序员施加过多限制,是一种专业程序员优先选择的语言。它有如下主要特点:

1.C语言简洁紧凑,压缩了一切不必要的成分。ANSI C有32个关键字,TURBO C有58个关键字,9种控制语句,书写形式自由。

2.C语言运算丰富,将括号、赋值、强制类型转换、取变量地址等都以运算实现。ANSI C提供34种运算符,TURBO C提供了44种运算符,灵活使用这些运算符可以实现其它高级语言难以实现的操作。C语言的表达式简练、多样、灵活、实用,加上分号可以构成语句。

3.C语言数据类型丰富,具有现代语言的各种数据类型,用户还能扩充它,实现各种复杂的数据结构,完成各种问题的数据描述。尤其是C语言的指针类型,非常有特色,可指向各种数据,完成数据的高效处理。C语言不但对数据作类型上的描述,还提供存储属性考虑。

4.C语言是一种结构化程序设计语言,层次清晰,便于按模块化方式组织程序,易于调试和维护。C程序由若干程序文件组成,一个程序文件由若干函数构成。

5.C语言可以直接访问物理地址,进行位(bit)一级的操作,能实现汇编语言的大部分功能。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体的表现能力和处理能力极强,有时也被称作中级语言。6.C语言提供了预处理机制,有利于大型程序的编写和调试。

7.C语言生成的目标代码质量很高,程序执行效率很高。一般只比汇编程序生成的目标代码效率低10~20%。

8.用C语言写的程序可移植性好(与汇编语言比)。基本上不作修改就可以用于各种型号的计算机和各种操作系统。

9.C语言语法限制不太严格,程序员设计自由度较大。例如,对数组下标越界不做检查,由程序员自己保证程序的正确。一般的高级语言语法检查比较严,能检查出几乎所有的语法错误,而C语言允许程序员有较大的自由度,因此放宽了语法检查。限制与灵活是一对矛盾,限制严格,就失去灵活性;而强调灵活,就必然放松限制。一个不熟练的人员,编一个正确的C程序可能会比编一个其它高级语言程序难一些。也就是说,对用C语言的人,要求对程序设计更熟练一些。

1.2 基本语法成分

本节介绍C语言的字符集、关键字、标识符、运算符、分隔符和注释符等基本语法成分。1.2.1 C语言的字符集

字符是组成语言的最基本的元素。C语言字符集由字母,数字,空格,标点和特殊字符组成。在字符串常量和注释中还可以使用汉字或其它可表示的图形符号。

1.字母

小写字母a~z共26个,大写字母A~Z共26个。2.数字

0~9共10个

3.空白符 空格符、制表符、换行符等统称为空白符。空白符只在字符常量和字符串常量中起作用。在其它地方出现时,只起间隔作用,编译程序对它们忽略。因此在程序中使用空白符与否,对程序的编译不发生影响,但在程序中适当的地方使用空白符将增加程序的清晰性和可读性。

4.标点和特殊字符 主要有!# % ^ & +-* / = ~ < > |., :;? ’ ”(){ } [ ] 等等。

由字符集中的字符可以构成C语言进一步的语法成分,如标识符、关键字、特殊的运算符等。

1.2.2 标识符

在程序中使用的变量名、函数名、标号等统称为标识符,用来标识各种程序成分。除库函数的函数名由系统定义外,其余都由用户自定义。C语言规定,标识符只能是由字母(A~Z,a~z)、数字(0~9)、下划线(_)组成的字符串,并且其第一个字符必须是字母或下划线。

以下标识符是合法的:

a , x , x3 , BOOK1 ,sum5 , num_1 以下标识符是非法的: 3s 以数字开头 s*T 出现非法字符*-3x 以减号开头

bowy-1 出现非法字符-(减号)在使用标识符时还必须注意以下几点:

(1)标准C不限制标识符的长度,但它受各种版本的C 语言编译系统限制,同时也受到具体机器的限制。例如在某版本C 中规定标识符前八位有效,当两个标识符前八位相同时,则被认为是同一个标识符。TURBO C中标识符最大长度为32个字符。

(2)在标识符中,大小写是有区别的。例如BOOK和book 是两个不同的标识符。习惯上符号常量用大写字母表示,而变量名等用小写字母表示。

(3)标识符虽然可由程序员随意定义,但不能与关键字同名,也不能与系统预先定义的标准标识符(如标准函数)同名。标识符是用于标识某个量的符号,因此,命名应尽量有相应的意义,以便阅读理解,做到“见名知义”。

1.2.3 关键字

关键字是由C语言规定的具有特定意义的字符串,通常也称为保留字。如类型说明符int,double等;语句特征if、switch、while等;预处理命令include、define等。关键字是构成C语言的语法基础,用户定义的标识符不应与关键字相同,也不能对关键字进行重新定义。常见的关键字参见附录1。

1.2.4运算符

C语言中含有相当丰富的运算符。运算符与变量、函数一起组成表达式,表示各种运算功能。运算符由一个或多个字符组成。根据参加运算对象的个数,运算符可分为单目运算符、双目运算符和三目运算符。

C语言中的运算符都由特定的意义和格式,这些将在后续章节中详述,并请读者参考附录3。

1.2.5 分隔符

C语言中的分隔符有逗号和空格两种,逗号主要用在类型说明和函数参数表中,分隔各个变量。空格多用于语句各单词之间,作间隔符。在关键字、标识符之间必须要有一个以上的空格符作间隔,否则将会出现语法错误。例如把“int a;”,写成“ inta;”,C编译器会把“inta”当成一个标识符处理,其结果必然出错。

1.2.6 注释符

注释符是以“/*”开头并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。程序编译时,不对注释作任何处理。注释可出现在程序中的任何位置。注释用来向用户提示或解释程序的意义。在调试程序时对暂不使用的语句也可用注释符括起来,使编译跳过不作处理,待调试结束后再去掉注释符。

1.3 C程序结构

为了说明C语言源程序结构的特点,先看以下几个程序。这几个程序由简到难,表现了C语言源程序在组成结构上的特点。虽然有关内容还未介绍,但可从这些例子中了解到组成一个C源程序的基本部分和书写格式。

【例1-1】 main(){ printf(“Hello world!n”);} main是主函数的函数名,表示这是一个主函数。每一个C源程序都必须有,并且只能有一个主函数(main函数),这是整个C程序运行的入口点。printf是C语言中的输出函数(详见第4章),是一个由系统定义的标准函数,可在程序中直接调用,它的功能是把要输出的内容送到显示器去显示。双引号内字符串原样输出,“n”是回车换行符。

【例1-2】

/* 例1-2,求两数的和。*/ main(){ int a,b,sum;/* 这是定义变量*/ a=12;b=34;sum=a+b;printf(“sum is %dn”,sum);} 本程序的作用是求两个整数a和b之和。/*„„*/表示注释部分,为便于理解,这儿用汉字表示注释,当然也可以用英语或汉语拼音作注释。注释只是用来向用户提示或解释程序的意义,对程序编译不起任何作用。注释可出现在程序中的任何位置。程序第三行是变量说明部分,说明a和b是整型(int)变量。第四行是两个赋值语句,使a和b的值分别为12和34。第五行使sum的值为a+b。第六行中“%d”是输入输出的格式字符串,用来指定输入输出时的数据类型和格式(详见第四章),“%d”表示十进制整数类型。在执行输出时此位置上代以一个十进制整数值。printf函数中括号内最右端sum是要输出的变量,现在它的值为46(即12+34=46),因此输出一行信息为:

sum is 46

【例1-3】

/* 例1-3 此函数的功能是输入两个整数,输出其中的大数。*/ #include “stdio.h”

int max(int a,int b);/*函数说明*/ main()/*主函数*/ { int x,y,z;/*变量说明*/ printf(“input two numbers:n”);scanf(“%d%d”,&x,&y);/*输入x,y值*/ z=max(x,y);/*调用max函数*/ printf(“maxmum=%d”,z);/*输出*/ } int max(int a,int b)/*定义max函数*/ { if(a>b)return a;else return b;} 上面程序的功能是由用户输入两个整数,程序执行后输出其中较大的数。本程序由两个函数组成,主函数和max 函数,两者之间是并列关系。max 函数是一个用户自定义函数, 要先给出说明(程序第二行),它的功能是比较两个数,然后把较大的数返回。程序的执行过程是,首先在屏幕上显示提示字符串,请用户输入两个数,回车后由scanf函数语句接收这两个数送入变量x,y中,然后调用max函数,并把x,y 的值传送给max函数的参数a,b。在max函数中比较a,b的大小,把大者返回给主函数的变量z,最后在屏幕上输出z的值。有关函数、参数等的概念以后章节会详细讲述,这儿只想使读者有个初步印象。

程序第二行以#开头的称为预处理命令(详见第9章)。预处理命令还有其它几种,这里的include 称为文件包含命令,其意义是把尖括号<>或双引号""内指定的文件包含到本源程序文件中来,成为本程序的一部分。被包含的文件通常是由系统提供的,其扩展名为.h。因此也称为头文件或首部文件。C语言系统提供的头文件中包括了各个标准库函数的函数原型,因此,凡是在程序中调用一个库函数时,都必须包含该函数原型所在的头文件。在本例中,使用了两个库函数:格式化输入函数scanf和格式化输出函数printf,其头文件为stdio.h,因此在程序的主函数前用include命令包含了它。

需要说明的是,C语言规定对scanf和printf这两个函数可以省去对其头文件的包含命令。所以在本例中也可以删去第二行的包含命令#include。同样,在例1-1和例1-2中使用了printf函数,也省略了包含命令。

通过以上几个例子,我们可以看到C源程序的结构特点:

1.一个C语言源程序可以由一个或多个源文件组成,每个源文件以“.c”作为扩展名。2.每个源文件可由一个或多个函数组成。

3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数,整个程序的运行从主函数开始。

4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。

5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。

6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

书写程序时应遵循的规则

从书写清晰、便于阅读、理解和维护的角度出发,在书写程序时 应遵循以下规则: 1.一个说明或一个语句占一行。

2.用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。

3.低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。

1.4 C语言的编辑、编译和运行

C程序在计算机上的实现与其它高级语言一样,一般要经过编辑、编译、连接、运行四个步骤,如图1-1所示。

1.编辑

编辑就是建立、修改C语言源程序并把它输入计算机的过程。C语言的源文件以文本文件的形式存储在磁盘上,它的后缀名为.C。

源文件的编辑可以用任何文字处理软件完成,一般用编译器本身集成的编辑器进行编辑。

2.编译

C语言是以编译方式实现的高级语言,C程序的实现必须经过编译程序对源文件进行编译,生成目标代码文件,它的后缀名为.obj。

编译前一般先要进行预处理,譬如进行宏代换、包含其它文件等等。

编译过程主要进行词法分析和语法分析,如果源文件中出现错误,编译器一般会指出错误的种类和位置,此时要回到编辑步骤修改源文件,然后再进行编译。

3.连接

编译形成的目标代码还不能在计算机上直接运行,必须将其与库文件进行连接处理,这个过程由连接程序自动进行,连接后生成可执行文件,它的后缀名为.exe。

如果连接出错同样需要返回到编辑步骤修改源程序,直至正确为止。4.运行

一个C源程序经过编译、连接后生成了可执行文件。要运行这个程序文件,可通过编译系统下的运行功能,也可以在DOS系统的命令行输入文件名后再按“Enter”确定,或者在Window系统上双击该文件名。

程序运行后,可以根据运行结果判断程序是否还存在其它方面的错误。编译时产生的错误属于语法错误,而运行时出现的错误一般是逻辑错误。出现逻辑错误时需要修改原有算法,重新进行编辑、编译和连接,再运行程序。

本章小结

C语言已有较长的发展历史,目前,ANSI 标准 C具有基础性地位。

C语言是一种高级语言,它可读性强,层次清晰,便于按模块化方式组织程序,易于调试和维护。同时,C语言的数据类型丰富而有特色,能实现各种复杂的数据结构,完成各种问题的数据描述。除了这些作为高级语言的优点外,C语言可以直接访问物理地址,7 进行位(bit)一级的操作,能实现汇编语言的大部分功能。因此,C语言集高级语言和低级语言的优点于一身,有时也被称作中级语言。

C语言源程序的书写规范非常重要,主要包括大小写习惯、语句的结束符号、层次与缩进、合理使用注释等等。这些规范有的是强制执行,不这样做就会导致编译错误。另外有一些是经验总结,使程序易于理解和调试,我们应一开始就养成自觉遵守书写规范的好习惯。

本章还介绍了C语言的结构特征、主函数的作用及位置无关性(最先执行)、函数的分类及库函数、头文件及预处理、标识符的构成规则等基础知识。在等级考试中,这些内容经常出现在选择题中,尤其是标识符的构成规则、主函数的特性等。

习题

1.简述C语言的主要特点。2.简述标识符的构成规则。

3.简述注释在C语言中的作用及书写方法。4.简述C程序的实现步骤。

5.下列选项中,可以作为C语言标识符的是()

A、3stu B、#stu C、stu3 Dstu.3 6.下列选项中,不可以作为C语言标识符的是()

c语言属于语言 篇7

关键词:C语言,汇编语言,混合编程,技术

C语言的应用日益广泛, 但是并不代表C语言可以满足所有的汇编要求。在有的用C语言不能进行汇编的工作中, 需要编程技术的不断创新, 让C语言与汇编语言混合, 来满足多种汇编语言的要求。C语言中, 只是一种比较中级的语言。而汇编语言具有:程序代码短, 执行速度快等特点;只有将C语言与汇编语言混合编程混合运用, 才能满足不同的汇编要求。在混合编程中, 也有很多的规定和方法, 以及在实施过程中的具体步骤。笔者主要就C语言与汇编语言混合编程技术的问题进行了研究。

1 C语言介绍

C语言是伴随计算机的发展应运而生上午, 在现在的软件开发领域中得到了广泛应用。当然C语言也是有很多优点的, 比如说它的数据类型较为丰富, 表达能力强, 应用效率比较高, 使用灵活、方便。C语言的功能是很强大的, 它可以涵盖高级语言程序的优点, 还可以具有汇编语言的特点。

1.1 C语言的优点

1.1.1 C语言是一种高级语言

在C语言中, 可以把高级语言的编程程序与低级语言的一些优势相结合, 达到了汇编语言的要求, 可以具备汇编语言的很多特点, 对很多的编程都可以进行。

1.1.2 C语言是一种结构性的语言

结构式的语言的特点就是将代码和数据进行分隔化。结构化的语言就会让很多的语言形成一个结构的特点, 可以使编程的层次性更加清晰, 会使结构程序完全的结构化。

1.1.3 C语言的功能齐全

C语言在不断的发展过程中, 已经融合了很多的数据类型, 而且在后来的发展过程中又引入了指针的概念, 这就大大提高了程序的操作效率。而且, C语言在应用过程中有非常强大的计算功能和逻辑判断能力, 在应用中具有强大的优势。

1.1.4 C语言的使用范围广

C语言不断改进, 现在可以满足多种操作系统, 现在市面上的操作系统, 基本上都可以满足, 它的操作能力有的时候可以优于其它程序, 现在有一些别的编程不能够进行的操作, C语言就可以满足操作要求。

1.1.5 C语言应用指针

可以直接进行靠近硬件的操作, 但是C语言的指针操作不做保护, 也给它带来了很多不安全的因素。C++在这方面做了一定改进, 在保留了指针操作的同时又增强了安全性, 受到了一些用户的支持, 但是, 由于这些改进增加语言的复杂度, 也为另一部分所诟病。Java则吸取了C++的教训, 取消了指针操作, 也取消了C++改进中一些备受争议的地方, 在安全性和适合性方面均取得良好效果, 但其本身解释在虚拟机中运行, 运行效率低于C++/C。一般而言, C, C++, java被视为同一系列的语言, 它们长期占据着程序使用榜的前三名。

在C语言中可分分:基本数据类型、构造数据类型、指针类型、空类型等四个类型。

1.2 C语言存在的不足

1.2.1 C语言的缺点主要表现在数据的封装性上

这一点使得C语言在数据的安全性上具有很大缺陷, 这也是C和C++的一大区别。

1.2.2 C语言的语法限制不太严格, 对变量的

类型约束不够严格, 影响程序的安全性, 对数组下标越界不作检查等

从应用的角度, C语言比其它高级语言较难掌握。也就是说, 对用C语言进行语言编程的技术人员来说, 要求其对程序设计要更加熟练一些。

2 汇编语言介绍

汇编语言是一种符号语言, 它与机器密切相关, 是面向机器的语言, 具有代码短, 占用存储空间小, 运行速度快, 直接控制硬件等优点, 所以它的运行速度是高级语言所不能比拟的。但用汇编语言开发程序, 编程工作量大, 开发周期长, 容易出错, 且不易调试。

汇编语言属低级语言, 而C语言是高级语言, 所谓高级语言就是更容易被人们理解的语言, 其实汇编语言能实现的功能往往也能通过C语言来实现, 甚至用C语言会更简单, 但是汇编语言有一个优势是其它任何语言所不具备的, 这也是为什么汇编语言一直能在编程中占有一席之地, 那就是汇编语言对硬件的直接控制, 也就是说它能直接对硬件操作, 可以绕过操作系统对硬件直接控制。虽然有的领域其它编程也能实现, 但在很多地方往往是汇编语言能更加简单, 更加完美的完成。而且学好了汇编语言你就能对CPU是怎么工作的有了清晰的认识, 所以学计算机专业的一般都要学汇编语言。

人类最容易接受自己每天都使用的自然语言。为了使机器指令的书写和理解变得容易, 需要借鉴自然语言的优点, 为此就引入了汇编语言。汇编语言使用符号来代表不同的机器指令, 而这些符号非常接近于自然语言的要素。基本上, 汇编语言里的每一条指令, 都对应着处理器的一条机器指令。

汇编语言包括两个部分:语法部分和编译器。语法部分提供与机器指令相对应的助记符, 方便指令的书写和阅读。当然, 汇编语言的符号可以被人类接受, 但不能被处理器识别。为此, 还要由汇编语言编译器将这些助记符转换成机器指令。

根据应用领域的不同, 处理器的种类较多, 比如用于工业控制和嵌入式计算的Z80、MC68000和MCS-51, 广泛应用于个人计算机的INTELx86系列, 以及基于ARM体系结构的处理器, 包括苹果公司在内的大企业都是ARM的客户。在市场上, ARM处理器是最受欢迎的32位嵌入式处理器, ARM处理器比INTEL奔腾系列卖得快的多, 基本上是3∶1的比例。

不同的处理器有不同的指令集。正是因为这个原因, 每一种处理器都会有自己专属的汇编语言语法规则和编译器。即使是同一种类型的处理器, 也可能拥有不同的汇编语言编译器。一个明显的例子是INTEL x86系列的处理器, 围绕着它就可以开发出多种编译器来, 如MASM、NASM、FASM、TASM和AT&T等。而且, 每一种编译器, 使用的语法也不同。

2.1 汇编语言中的优点

2.1.1 使用汇编语言, 可以访问所有能够被访问的软、硬件资源

因为用汇编语言设计的程序最终被转换成机器指令, 故能够保持机器语言的一致性, 直接、简捷, 并能像机器指令一样访问、控制计算机的各种硬件设备, 如磁盘、存储器、CPU、I/O端口等。

2.1.2 目标代码简短, 占用内存少, 执行速度快

汇编语言经常与其它高级语言配合使用, 以改善程序的执行速度和效率, 进而弥补了高级语言在硬件控制方面的不足, 其应用十分广泛。

2.2 汇编语言存在的不足

2.2.1 汇编语言是面向机器的, 处于整个计算

机语言层次结构的底层, 故被视为一种低级语言, 它通常是为特定的计算机或系列计算机专门设计的

因此, 不同的处理器有不同的汇编语言语法和编译器, 编译的程序无法在不同的处理器上执行, 缺乏可移植性;

2.2.2 难于从汇编语言代码上理解程序设计意图, 可维护性差

即使是完成简单的工作也需要大量的汇编语言代码, 容易产生bug, 难于调试;

2.2.3 使用汇编语言必须对某种处理器非常了

解, 而且只能针对特定的体系结构和处理器进行优化, 开发效率较低, 周期长且单调。

3 C语言与汇编语言的不同点

它们的指令集, 寻址方式不同, 相当于两个机器各有各自的操作方式。汇编语言是低级语言, 在编写程序的时候会根据不同的情况指定使用不同的寻址方式, 能够对内存和CPU里的通用寄存器直接操纵;不同的计算机系列会有不同的汇编语言。而C语言是高级语言, 可以实现跨平台。编写程序无需指定CPU的指令执行情况, 一段程序可以在不同体系结构的计算机上使用汇编的低级别语言, 优点在于能够对硬件资源进行准确的操作, 比如寄存器的使用和数据存储的具体位置。能充分运用硬件资源。但编写程序较为复杂, 程序阅读麻烦。

4 C语言与汇编语言混合编程的一般方法

对于LF240x A的混合编程主要有三种方法:

(1) 对C语言程序编译后形成的汇编程序进行手工修改与优化;

(2) 在C语言程序中直接嵌人汇编语句;

(3) 分别编写C语言程序和汇编语言程序, 然后独立编译成目标代码模块, 再进行链接。第一种编程方式要求对汇编语言与C语言要特别熟悉, 并且这样的编程方式对程序的可读性和扩展性的负面影响较大, 一般不建议使用。第二种方法适用于语句执行频率较高, 且C编程与汇编编程效率差异较大的情况, 例如进入中断的通用中断子程序等。第三种方式是混合编程最常用的方式之一, 在这种方式下, C语言程序与汇编语言程序均可使用另一方定义的函数与变量。下面重点介绍后两种方法:

4.1 C语言程序中嵌入汇编语言

C语言程序支持asm指令, 所以可以利用这条指令直接将汇编语句嵌入到C语言程序中。LF240x A中一些C语言无法操作的控制位, 可以采用这种方式来实现。这种方法只需在汇编语句两边加上双引号并用小括号括起来, 前面再加上asm关键字, 即“asm (“汇编语句”) ;”。需要注意的是, 汇编语句不能紧挨着前一个双引号, 它们之间必须用空格、Tab或标号开头。例如, 在汇编语言中开中断指令SETC INTM, 嵌入到C语言中为“asm (“SETCINTM”) ;”。这种方式虽然操作简单, 但是汇编代码很有可能破坏原来的C语言环境, 从而导致不可预料的结果。因此, 只提倡在程序开始的系统初始化部分少量使用, 而在C语言中嵌入实现某一完整功能的多句汇编语言时, 不宜采用此种方式。

4.2 C语言与汇编语言程序相互调用

4.2.1 C语言程序调用汇编函数

C语言程序中调用的汇编函数, 在汇编语言中其名称以程序标号的形式出现。程序标号作为操作数用global进行定义, 在前面加下划线“_”。汇编函数也可以利用累加器给C语言程序传递返回值。

LF240x A有8个辅助寄存器 (AR0~AR7) 可供使用, 在C语言环境中这些寄存器都有明确的区分。

4.2.2 汇编语言程序调用C函数

汇编语言程序中调用C函数。被调用的C函数在C语言环境中需要用extern进行定义, 在汇编程序中用ref说明为外部标号, 且函数名加“_”。在调用C函数之前应手工编程将参数以逆序写入当前运行任务所使用的任务堆栈中, 压栈之前堆栈指针可不作调整。被调用的C函数即可正常访问调用者传递的参数, 函数调用完毕后需调整堆栈指针, 清除函数调用中参数所占用的堆栈空间。C函数的返回值可以通过访问累加器获得。

4.3 应注意的事项

4.3.1 中断的处理

LF240x A发生中断时, 程序指针 (PC) 就指向相应的中断向量, 并通过中断向量映射到相应的中断服务子程序。例如, 在0004h~0005h处是INT2的中断向量, 在此存储了1条跳转指令, 跳转至INT2的服务子程序。LF240x A的C语言有interrupt修饰符可以用来定义中断服务子程序。

4.3.2 字母大小写

在C语言环境中, 对于字母大小写的区分是很严格的, 因此在混合编程的过程中也应该严格遵守这一点。例如, 在写命令文件时, 如果将“data”写成“.da TA”, 此时系统将无法给初始化代码分配存储空间, 导致程序无法执行。

4.3.3 C语言库函数应用

TI的C编译器中内置了很多函数, 包含在rts2xx.1ib的函数库中。库函数并不是C语言的一部分, 它是由人们根据需要编制并提供给用户直接使用的。每一种C编译系统都提供了一批库函数, 不同的编译系统所提供的库函数的数目、函数名及函数功能是不完全相同的。要使用库函数, 只需在源文件中添加语句“#include”函数名.“h”, 就可使用相应的库函数了。

4.4 C程序中内嵌汇编指令行嵌入方法

可在C程序中直接嵌入汇编指令, 它就好像C程序的语句一样, 当C语言程序中想直接控制硬件或加快运行速度, 用较短的汇编程序实现时, 可采用这种方法, 其具体方法是:

(1) 在嵌入汇编指令前, 必须用关键字asm说明;

(2) 内嵌式汇编指令中的操作数;

(3) 汇编指令操作数也可以是结构数据。

4.5 C语言与汇编语言混合编程的方法

通常把组合两种或两种以上程序设计语言, 通过相互调用、参数传递、共享数据结构和数据信息而形成程序的过程叫做混合编程。混合编程中的关键问题是建立不同语言之间的接口, C语言和汇编语言混合编程可分为:C程序内嵌汇编指令、C程序调用汇编语言子程序和汇编语言调用C函数三种方法。

4.6 C语言与汇编语言混合编程的约定规则

(1) 命名约定;

(2) 声明约定;

(3) 寄存器使用约定;

(4) 储存模式约定;

(5) 参数传递约定。

5 结束语

C语言与汇编语言的相互结合, 混合编程将两者的优点有机融合, 可以满足更多的编程要求, 彼此相互调用, 进行参数的传递, 是一种很有效很实用的编程方法。这种混合编程可以发挥各自的优势, 达到很好的使用效果。虽然在混合编程中可能还存在一些的问题, 但只要在实践中多实践、多积累经验, 就会避免出现错误, 就会取得理想的效果。

参考文献

[1]翟乃强, 隋树林.汇编语言与C语言及VisualC++混合编程[J].青岛科技大学学报, 2003, 24 (B09) :136-138.

[2]钱晓捷.汇编语言程序设计 (第二版) [M], 北京:电子工业出版社, 2003.6.

[3]钱春英.浅谈C语言与汇编语言混合编程的一些技术[J].南通航运职业技术学院学报, 2005, 4 (1) :50-55.

c语言属于语言 篇8

关键词:记忆法;C程序设计语言;口诀记忆

中图分类号:H319文献标识码:A文章编号:1671-864X(2016)08-0190-01

计算机C语言具有设计特性、高效性、可移植性、灵活性、强大的功能等优势,学好C语言有非常重要的意义[1]。但由于初学者缺少先验知识,该课程学习难度大,知识掌握较困难。本文采用“口诀记忆法”,将一些较为复杂和零散的知识点进行编写串联,对促进学习者有效学习的发生,提供了一种较好的选择。

该课程新增知识点较少,教材内容变化不大,通过以下四个步骤(如图1),即可完成编写过程,后续只需在教材章节的基础上对知识点上进行细化。

一、分析环节

分析环节一般分为两个步骤,第一是对学习者的分析,第二是对知识点的分析。分析学习者应该着重分析学习者的一般特征、入门能力和学习风格。教师可以通过查看学生以前的学习成绩记录、直接向学生提问、与学生交谈、与教师交谈、标准化测试、教师自己出题等方式来了解教学对象的特征和入门能力[2]。学习风格可以选择问卷或量表进行测量。在此基础上,确定要进行记忆的重难点。教学者应重点关注那些理解力和思维能力较弱,但容易调动积极性的学习者,进行重点的教学辅导。

对于知识点的分析,一般应结合教材目录、前人总结、课后习题、题库试题等方面进行。以《第二章C程序设计的初步知识》[3]章节为例,首先借助教材对知识点进行初步细分。由目录可知,该章节包括“简单的C语言程序的格式”、“标识符、常量和变量”、“数据类型”、“算术表达式”、“赋值表达式”、“自加、自减运算符和逗号运算符”等小节。其次是对每小节具体知识点进行分析,教材一般都提供了课后习题,这些习题是专家教师经过长期实践总结出的,具有一定的代表性。教学者可以将其中一部分作为要点暂时列出。最后在结合对学习者分析的基础上,进一步筛选出要点知识,即编写知识点。

二、选择记忆方式

对于编写知识点,可以采用口诀记忆可以选择谐音、简化、对偶和综合等方式进行编写。谐音记忆就是把需要记忆的教学难点内容跟日常生活中的谐音结合起来,采用押韵、联想等方式进行记忆;简化是将复杂的知识点,突出重点后进行选择性的简化;对偶是用对称的字句加强语言的效果,但一般情况下在记忆法中,较难达到完整的对偶,只要求字数大概一致即可;综合的方式是指没有固定的格式,可以将几种方式结合运用(如表1所示)。初步完成编写的记忆法往往较为粗陋,还会存在混淆概念或知识点的可能,教学者需要在不断实践的基础上进行修改,同时最好配有口诀的解析说明,方便学习者理解记忆,避免产生歧义。

三、学习者参与编写

对编写的口诀而言,学习者参与编写,可以发挥群体智慧,逐步完善其解释和记忆功能。对学习者自身而言,积极参与会提高学习效果[2]。对教学者而言,可以减轻教学者编写负担。教学者可以定期组织学习者展示上交记忆法成果。

四、评价反馈与修改

评价反馈与修改在整个记忆法的编写过程中都在不断进行,包括判断学习者分析是否准确、对知识点的分析是否适当、对记忆方式是否有改进、对学习者学习和编写过程及结果是否有效。在此过程中,记录调查结果、原始口诀和改进口诀及其解释说明、学习者学习表现等都会为评价过程提供重要的数据依据。同时鼓励并组织学习者对学习中的重难点和学习中出现的问题进行反馈;最后,教学者要把握谨慎修改,修改必须记录说明的原则,逐步修改和完善记忆法。

参考文献:

[1]普拉塔.C Primer Plus(第五版)中文版[M].人民邮电出版社,2005.

[2]斯马尔迪诺.教学技术与媒体[M].高等教育出版社,2008.

[3]教育部考试中心.全国计算机等级考试二级教程——C语言程序设计[M].2010年版.北京:高等教育出版社,2010.

上一篇:关于建设生态文明社区的调查报告下一篇:2016上学迟到怎么写保证书