C 输入输出

文章目录

  • 标准输入输出函数库 stdio.h
  • 输入输出函数的分类
  • 单个字符输入函数 getchar
  • 单个字符输出函数 putchar
  • 格式化输入函数 scanf
  • 格式化输出函数 printf

标准输入输出函数库 stdio.h

C 和 C++ 提供了一个标准输入输出函数库stdio.h,在程序中包含该函数库后,就可以使用其中的标准函数进行输入输出操作了。在程序中表示如下:

#include 		// 包含标准输入输出函数库

输入输出函数的分类

标准输入输出函数库 stdio.h 提供的函数总体上可分为

  • 格式化输入输出函数
  • 单个字符输入输出函数
  • 字符串输入输出函数

单个字符输入函数 getchar

单个字符的输入函数为 getchar ,其函数原型为:

int getchar(void);
  • 函数 getchar 没有参数(后面的括号中为空或者 void ),它从标准输入设备(键盘)读入一个字符,并将该字符以整数( int )形式返回

  • 返回的字符要用于输出,所以不能丢弃。我们需要申明一个变量来存储该字符,申明的变量在内存中会有对应的存储空间。使用变量存储输入字符的语句为:

// 声明变量 x 存储输入的字符
char x = getchar();

单个字符输出函数 putchar

单个字符的输出函数为 putchar ,其函数原型为:

int putchar(int c);
  • 函数 putchar 用于向标准输出设备(显示器屏幕)输出一个字符,它的参数 c 是要输出的字符变量或字符常量(字符常量是用单引号括起来的一个字符,如’A’)。
  • 例如:
char x='A';
putchar(x);     // 输出变量 x 中存储的字符
putchar('A');     // 输出字符常量'A'

格式化输入函数 scanf

scanf 函数按照一定的格式从键盘输入数据。函数形式为:

scanf (<格式控制串> , <参数列表>);
  • <格式控制串> 是一个字符串,说明了输入数据要遵循的格式;
    C 输入输出_第1张图片

  • <参数列表> 是存放输入数据地址的列表,有多个输入数据时,参数之间用英文逗号,分隔。如果要把输入的数据写入一个变量,参数列表中需要使用变量的地址。获取变量地址的方法为:&变量名,其中&是地址运算符,其运算结果是后面的变量的地址。

  • 例如:
    从命令行读入一个整数、一个浮点数、一个整数,分别赋值给 num1、num2 和 num3。如下代码:
    如果命令行输入为:12 34.5 678,则该函数执行的效果是:系统读取整数12并赋值给 num1,读取浮点数34.5并赋值给 num2,读取整数678并赋值给 num3。

scanf(%d%f%d″, &num1, &num2, &num3);     //其中 %d 和 %f 均为转换说明符,分别表示读取的数据为整型和浮点型。

格式化输出函数 printf

printf 函数按照指定的格式向屏幕输出数据。函数形式为:

printf (<格式控制串>,  <参数列表>) ;
  • <格式控制串>
    printf 函数执行时,根据格式控制串中的格式指示符、转义字符和普通字符等,从左到右依次进行处理:
  1. 遇到普通字符,(除格式指示符和转义字符外的其他字符),则按照原样输出;
  2. 遇到转义字符,则按照其含义输出相应的符号;
  3. 遇到格式指示符,则将对应的输出数据按照格式指示符指定的方式输出。格式指示符作用是将参数列表中相应的输出数据转换为指定的格式输出。
    格式指示符的一般形式为:
% <标志> <域宽> <精度> <转换说明符>
//	其中,<标志>、<域宽>和<精度>都是可选项,可以不出现。
  • 标志
    C 输入输出_第2张图片
  • 域宽
    域宽一般为一个整数,指明了数据输出的宽度。
    如果数据实际长度小于域宽,则数据输出右对齐,即数据仍然按照域宽规定输出,在数据左边用空格补齐;
    如果数据实际长度大于域宽,那么系统将自动突破域宽的限制,按照数据的实际长度进行输出。
    注意,负号要占据一个字符位置。如果没有指明域宽,系统则按照数据的实际长度输出。
  • 精度
    精度一般也是一个整数,对于不同类型的数据,精度的含义也不一样。
    ① 对于整数,精度表示至少要输出的数字个数。
    如果数据实际长度小于精度,则左边用0补齐,使得数据长度等于精度;如果数据实际长度大于精度,则自动突破精度限制,按照数据的实际长度输出。省缺情况下整数的精度为1。
    ② 对于浮点数,有两种情况。
    如果转换说明符为 e、E 和 f,精度表示小数点后的有效位数。如果数据小数部分的实际长度小于精度,则在右边补齐0,使得小数部分长度等于精度;如果数据小数部分的实际长度大于精度,则按照精度对数据进行舍入输出;
    如果浮点数的转换说明符为 g 和 G,精度表示打印数据的最大的长度。
    ③ 对于字符串数据,精度表示字符串输出的最大长度。
    如果输出字符串的实际长度小于精度,则按照字符串的实际长度输出;如果字符串的实际长度大于精度,则按照精度截取输出字符串开头的 n 个字符(假设精度为 n )输出。
  • 转换说明符
    C 输入输出_第3张图片
  • 例如
    以域宽为10、右对齐的方式输出15,然后再输出换行符(\n):
    printf("%10d\n",15);
    输出结果为:________15(这里用_代替空格,凸显结果,即输出结果也就是在15前面补充8个空格。)
  • <参数列表>
    存放输出数据列表,有多个输出数据时,中间用,分隔。格式指示符的数量、顺序与输出数据相对应。

你可能感兴趣的:(C++)