输入与输出与杂货

窗棂


第 一 章 标准输入输出

  本篇主讲标准输入输出,此功能不是C语言本身部分。输入输出只是C语言标准库定义的。标准库里面的函数,可以保证绝大部计算机上是如何实现的,函数接口是一致的。
  接下来,对准输入输出,不是C语言本身,可窥见一二!
  列如,标准输入输出实现简单文本输入输出,文本流遵循一行结尾一个换行符,如有不尊,库函数将实现修正。

第 二 章 万物皆可文件

  • 文件

     文件是一种结构类型—— FILE,文件指针 ,就是声明定义一个文件类型的指针。

  • 文件操作

     想要对文件操作,首先,创建一个文件指针,通过 fopen 函数以读、写和追加三种模式打开一个文件,最后不用请使用 fclose 函数断开连接并释放指针。

    • 打开文件——fopen

      打开文件,是文件的名字与操作系统建立连接,并由系统返回一个关联的指针!
      FILE *fp
      FILE *fopen(char *name, char *mode)。
      mode = “r”、“w”、“a”,分别读文件;写文件,文件已存在,覆盖原本内容,没有就创建新文件;文件已存在,就在原内容末尾追加数据,没有则创建新文件。
      读取不存在文件或读取无权限文件,会发生错误,fopen会返回空指针NULL,如果没发生错误,则返回文件指针。
    • 文件的写入和读取——getc、putc

      int getc(FILE *fp),返回fp指向的输入流中下一个字符,如果到达文件末尾或出错,则返回EOF。
      int putc(int c, FILE *fp),该函数是内存c字符的数据向文件输出,也叫写文件,并返回写入的一个字符,当出错时,则返回EOF。
    • 关闭文件——fclose

      int fclose(FILE *fp)函数,会断开外部名连接,并释放文件指针,以供其他文件使用。操作系统一般限制同时打开文件数,所以当不使用指针是,及时调用fclose释放指针。
      对输出文件执行fclose,会将把缓冲区中由putc函数正在收集的信息,输出写到文件,程序正常终止时,程序会自动为每个打开的文件调用fclose函数。


  • 流,指的是像水一样,从哪里流来,又流往哪里去,就是相对而言,数据何去何从的问题。

  • 系统环境提供三种常量流指针

    C语言程序运行时,运行环境会提供三个常量文件指针,你不可修改,stdin、stdout和stderr,分别是标准输入(通常为键盘输入)、标准输出(通常为显示器)和标准错误(显示器)。为啥有两个显示器输出呢?因为标准输出重定向或管道时,错误不能或不及时输出到显示器时,通过标准错误stderr把错误即时输出到显示器上。

  • 流重定向或管道

    在许多环境中,如windows的cmd和unix的shell,程序的标准输入输出,能够通过运算符“<”“>”和管道运算符“|”,重定向流。

    “程序名 <输入文件”,把该程序,从标准输入流,切换到输入文件流,“程序名1 | 程序名2”,把程序1的标准输出流,切换到程序2,即程序2的输入流是1号;

    “>”,是把程序的标准输出流,切换成文件输出流,“程序名2 | 程序名1”,把程序2的输出流,切换到程序1,即程序1的输入流是程序2。

  • 万物皆可文件

    万物皆可文件,是一种理念!比如C语言程序运行时,环境会提供三个标准流,标准输入stdin(键盘输入)、标准输出stdout(显示器)和标准错误输出stderr(也是显示器),这些都是文件指针,是具体设备映射成了文件!因此UNIX系统里随处可见万物皆可文件!

    这也解释了,标准库里的标准输入输出,不是C语言本身的问题啦。标准输入输出流,重定向时,不会影响到标准错误stderr。


第 三 章 格式化输入输出

  • 格式化输入输出

    格式化输入输出,是有一个字符串,且是格式字符串的字符指针,里面包含了以“%”开头和紧跟指定字符结尾的格式说明符序列。格式字符串参数,紧跟着与格式说明符序列,一一匹配的参数列表!后面的参数列表,在字符串里被依序解释。
  • 格式化输入
    • 通用特性

      三个格式化输入,即将闪亮登场!标准流、字符串流和文件流,是夜晚的猪脚。经过上一章的洗礼,可知,无论是标准流,还是文件流,本质都是文件,只不过,一个是运行环境提供的常量文件指针(不可修改标准流指针),另一个是需要自己打开文件和关闭文件操作。



      三者格式化输入,可分为三个特性。函数扫描完格式字符串,或者碰到输入与格式说明符不匹配,结束函数;同时输入项与格式成功匹配并赋值到相应参数,返回成功个数,若格式字符串中第一个就不匹配,则返回0,若遇到文件结尾,则返回EOF;同一个流下,下次调用输入函数,将从上一次转换后的下一个字符起继续扫描格式字符串。



      格式字符串包含的内容。空格或制表符,在处理过程中将被忽略;普通字符(不包括%),用于匹配输入流中的非空白字符;转换说明,依次由一个%、一个可选禁止赋值字符*、可选指定字段最大宽度的数值和可选的指定目标对象的宽度字符(h、l和L),以及一个转换字符组成。指定对象宽度,用h 是 short、小写字符 l 是long 这样的前缀修饰指针对象的长度类型,如浮点数转换符 f 加上字母 l,就表示 double 类型。

      注意:输入字段定义是,不含空白字符的字符串,其边界定义是到下一个空白字符或指定的字段宽度;赋值禁止符*,表示跳过该输入字段,不进行赋值(或不进行匹配);函数的所有无名参数都必须是指针;空白字符指的是,空格符、横向制表符、纵向制表符、换页符、回车符和换行符。

    • 三类格式化输入函数原型

      标准流:int scanf (char *format, …);
      字符数组流:int sscanf (char *string, char *format, …);
      文件流:int fscanf (FILE *fp, char *format, …);

    • 函数的输入数据和它的参数类型

字符  输入数据;参数类型
d表示输入数据是十进制整数;该整数是 int *类型
i整数;是 int *类型,输入数据,除了默认是十进制数外,还可以是0开头的八进制或以0x开头的十六进制
o八进制整数,可以指定数字0开头,也可不指定;int *类型
u无符号十进制数;unsigned int *类型
x十六进制整数,可以以一个数字0和不区分大小写的字符开头,也可不用;int *类型
c字符;char *类型,接下来以不跳过空白字符,每次只从标准输入流中的文本行中依次取一个字符存到指定位置。如要跳过空白符,请使用%加数字1和s。
s字符串,不加双引号;char *类型,指向一个足以存放该字符串的字符数组,数组结尾自动添加结束符 ‘\0’
e, f, g浮点数,可以包含正负号(可选)、小数点(可选)以及指数部分(可选);float *类型
%字符%;不进行任何赋值操作

注意:字符d、i、o、u和x,前面加上前缀h或l,可以改变整型int的长度;e、f、g的前面可加前缀l,表示浮点数的双精度类型double。
  • 格式化输出
    • 通用特性
    • 三类格式化输出的函数原型
    • 函数的输出和它的参数类型

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值