C语言输入输出

来源:互联网 发布:命令行查看数据库内容 编辑:程序博客网 时间:2024/06/05 03:59

按:摘自C程序设计语言(The C Progamming Language)第二版序言。
  1983年,美国国家标准协会(ANSI)成立了一个委员会,目标是制定“一个无歧义性的且与具体机器无关的C语言定义”,二同时又要保持C语言原有的“精神”。结果产生了C语言的ANSI标准。
  C语言最初是由Dennis Ritchie 为UNIX操作系统设计的,并在DEC PDP-11计算机上实现。UNIX操作系统、C编译器和几乎所有的UNIX应用程序都是用C语言编写的。同时,还有一些适用于其它机器的编译器产品。但是,C语言不受限于任何特定的机器或系统,使用它可以很容易地编写出不经修改就可以运行在所有支持C语言的机器上的程序。很适合用来编写编译器和操作系统,被称为“系统编程语言”。它可以处理大部分计算机能够处理的对象,比如字符、数字和地址。这些对象可以通过具体机器实现的算术运算符和逻辑运算符组合在一起并移动。

  C语言不提供直接处理诸如字符串、集合、列表或数组等复合对象的操作。虽然可以将整个结构作为一个单元进行拷贝,但C语言没有处理整个数组或字符串的操作。除了由函数的局部变量提供的静态定义和堆栈外,C语言没有定义任何存储器分配工具,也不提供堆和无用内存回收工具。最后,C语言本身没有提供输入\输出功能,没有READ或WRITE语句,也没有内置的文件访问方法。所有这些高层的机制必须由显示调用的函数提供。C语言的大部分实现已合理地包含了这些函数的标准集合。
  类似地,C语言只提供简单的单线程控制流,即测试、循环、分组和子程序,它不提供多道程序设计、并行操作、同步和协同例程。尽管缺少其中的某些特性看起来好像是一个严重不足(意味着必须通过调用函数比较两个字符串吗?),但是把语言保持在一个适度的规模会有很多益处。

  (ANSI标准)C89规范的两个重要贡献:a. 对语言进行了细微的改进; b. 为C语言定义了一个函数库。它描述了诸如访问操作系统(如读写文件)、格式化输入输出、内存分配和字符串操作等类似的很多函数。该标准还定义了一系列的标准头文件,它们为访问函数声明和数据类声明提供了统一的方法。这就确保了使用这个函数库与宿主系统进行交互的程序之间具有兼容的行为。该函数库很大程度上与UNIX系统的“标准I/O库”相似。

  由于大多数计算机本身就直接支持C语言提供的数据类型和控制结构,因此只需要一个很小的运行时库就可以实现自包含程序。由于程序只能够显示地调用标准库中的函数,因此在不需要的情况下就可以避免对这些函数的调用。除了其中隐藏的一些操作系统细节外,大部分库函数可以用C语言编写,并可以一直。

  ANSI C与C89、C99、C11区别差异中详尽描述了关于C语言规范的问题,以及编译器支持何种规范。

注:gcc是一组开源编译器,其中包含C语言编译器。编译器将程序翻译成机器语言。

0 0
原创粉丝点击