zoukankan      html  css  js  c++  java
  • <二> 三对输入输出函数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
      • 特点:只遇到‘ ’才结束输入(scanf需要这么使用:scanf("%[^ ]");)
    • eg:
      • 定义一个字符串数组
      • char s[6];
      • gets(s);

    2、读入字符串

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

    顺便普及一下数组的定义

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

     

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

    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,左对齐
    青春看起来如此完美, 没空闲去浪费时间。 <我们最后的话——刺猬>
  • 相关阅读:
    poj2104 Kth-Number
    bzoj2120 数颜色
    hdu5145 NPY and girls
    bzoj2734 集合选数
    bzoj3732 NetWork
    bzoj2152 聪聪可可
    hdu2036(多边形面积)
    超大次幂思路
    hdu 2030 统计汉字个数
    Hibernate 配置文件与映射文件 总结
  • 原文地址:https://www.cnblogs.com/WangJing0506/p/8539100.html
Copyright © 2011-2022 走看看