<二> 三对输入输出函数putchar,getchar,puts,gets,printf,scanf

其实吧,对于这三对儿,其实主要的区分还是他们的功能和参数还有返回值,我觉得在IO当中才能更好的领会输入输出函数的感觉。

其次就是其实还是要敲代码多练习,我觉得你看的再多不如去敲敲键盘这样领会的比较快。

毕竟有句话怎么说来着,理论是需要实战来验证的,如果光有理论充其量真的只能是纸上谈兵。

至于我分成三部分是因为我觉得这样便于记忆。

 

一、从终端读入一个字符或从终端输出一个字符

  • 好了敲黑板,划重点:***一个字符***
  1. 从终端读取一个字符
    • getchar();      (实际运用是这么用的)
    • int getchar(void);  (man手册是这么定义的,不用理会他啦)
    • 功能:从终端读取一个字符,吃掉垃圾字符
    • 参数:无参数
    • 返回:将成功读取字符的ASCII码值返回(注意哦,返回的是一个ASCII码值

eg:
getchar();

    • 就是这么用的不用质疑
    • ( )里面什么参数也没有,因为这个函数无参,所以什么参数都不用写
    • 使用这个函数之后会从终端等待你输入一个字符

2.从终端读入一个字符

    • putchar(c);
    • int putchar(int c);  (手册是这么定义的,不用理会他啦)
    • 功能:输出一个字符
    • 参数:传递一个整型的表达式
    • 返回:将成功输出字符所对应ASCII码返回

eg:

    • putchar('c');   //c的ASCII码为99,所以输出99,在这里c不是变量只是个字符
    • 或者      int c = 'A';
    • putchar(c);    //在这里c是变量

 

二、从终端读取或读入字符串------划重点(字符串)

1、从终端读取字符串

  • gets
    • char *gets(char *s);    //只能传递变量的地址
    • 功能:从终端读取字符串
    • 参数:char *传递地址
    • 返回:返回s
    • 特点:只遇到‘\n’才结束输入(scanf需要这么使用:scanf("%[^\n]");)
  • eg:
    • 定义一个字符串数组
    • char s[6];
    • gets(s);

2、读入字符串

  • puts
    • int puts(const char *s);    //const:可以传递变量的地址、常量的地址
    • 功能:打印字符串
    • 参数:char *传递地址
    • 返回:输出字符所占字节数
    • 特点:自带换行符,遇到‘\0’字符结束输出这个特性经常用
  • eg:
    • 定义一个字符串数组
    • char s[6];这个相当于定义了一个空字符串
    • gets(s);  //当你读入字符串的时候,s数组里面便存储了数据比如你从终端输入hello
    • puts(s);  //puts就会从数组中读出hello

顺便普及一下数组的定义

数组:由若干个数据类型相同的元素组成的集合
定义:类型 数组名[元素个数];
访问:s[0] ~ s[N-1]
性质:元素类型相同,数组名是地址 (这个你得记住数组名是地址)
这样的,假如有个数组s[6]="hello";
因为""双引号来表示字符串会自动在hello后面补上'\0'
所以s[6]可以这么表示s[6]={'h','e','l','l','o','\0'};
而数组中6个元素表示方式是从0开始的也就是说每个元素表示方式是这样的:
  s[0]='h';
  s[1]='e';
  s[2]='l';
  s[3]='l';
  s[4]='o';
  s[5]='\0';

 

三、(最后这个用的最多)根据指定格式输入输出

1、根据指定格式输入

  • scanf
    • int scanf(char *format, 存储的地址列表);
    • 功能:根据指定的格式获取指定类型的数据
    • 参数:format格式控制字符串,地址列表(&)
    • 返回:成功获取数据的个数
    • %d %o %x %c %f %s
  • 注意:
    • & 是个取地址符号
    • 例如int a;表示定义了一个变量a,a不是地址,所以在用的时候要加上取地址符&
  • eg:
    • int a;
    • scanf("%d",&a);
      • 因为a是int类型的所以用%d,然后你在终端输入的值会赋值给a
    • float b = 12.34;
    • scanf("%f",&b);
      • b是float类型,所以用%f
    • 字符类型用%c
    • 字符串类型用%s
    • 八进制用%o
    • 十六进制用%x
  • 还有数组本身就是地址
  • 所以:
    • char s[6]="hello";
    • scanf("%s",s);
    • 因为s是数组,数组是地址,所以就不需要加取地址符&了

2、根据指定格式输出

  • printf
    • 格式:printf(“格式控制串”,输出表)
    • 头文件:#include <stdio.h>
    • 功能:按指定格式向显示器输出数据
    • 返回:输出数据所占的数据宽度

1--- 输出类型

    • %d :有符号十进制整数
    • %o :八进制整数
    • %x :十六进制整数
    • %c :字符
    • %f :浮点型数据
    • %e :指数形式
    • %ld:long
    • %p :打印地址 //int a; &a; -->获取变量a在内存中的地址
    • %s :用于输出字符串

2--- 控制输出格式

    • # :在八进制、十六进制前加前导标识
    • M :控制输出数据域宽
    • - :输出实现左对齐,默认右对齐
    • 0 :空位用0补齐
    • .N :控制小数点位数(四舍五入), 控制字符串输出字符个数

eg:

    • int a = 5;
    • printf("%d",a);
    • printf("%-2d",a);//输出大小2,左对齐

posted on 2018-03-10 14:32  就是菁可爱哦  阅读(566)  评论(0编辑  收藏  举报

导航