C语言基础之输入输出

C语言本身并不提供输入输出功能,使用的是C语言函数库的输入输出函数,输入输出类型主要有以下几组:
        getchar / putchar ------ 操作一个字符
        scanf / printf ------ 格式化的函数
        get / put ------  操作一个字符串
本文主要介绍前两种。 

一、getchar() 和 putchar()

getchar
函数原型:int getchar (void) ------ 从键盘获取一个字符
参数:void ------ 表示为空,使用时不需要给值
返回值:返回值表示获取到的字符的ASSCII码值
eg:
        int ret;
        ret = getchar();

putchar
函数原型:int putchar(int c); ------ 输出一个字符
参数:@ c ------ 表示要输出的字符
返回值:如果成功返回输出了的字符的ASCII码值,失败返回 -1
 

二、printf()

函数原型:int printf(const char *format, ...) -----  ... 表示可变参数
简化---> printf(“格式控制字符串”,输出参数序列);

1. 格式控制字符串

(1)普通字符 ------- 直接匹配输出

(2)占位符 ------- 匹配后面的输出参数

①整型

   %d  --- 转换为有符号十进制形式
   %u  --- 转换为无符号十进制形式
   %o  --- 转换为八进制形式
   %x  --- 转换为十六进制形式
   %X  --- 转换为十六进制形式 a b c d e f以大写形式输出 ,0X 的x也会是大写

②浮点型

   %f  --- 转换为 十进制形式的小数,输出时默认保留6位小数,不足6位 补0
   %e  --- 转换为 科学计数法的形式 ,%E 也可以
   %g  --- 以 一种 更简洁的方式输出,同时不会输出无意义的0

③字符型

%c  --- 转换为字符形式输出 
%s  --- 转换为字符串形式输出 

④补充:辅助控制符

%   [辅助控制符]  d
   #   ---- %#x    // 打印出16进制的前缀 
            %#o     // 打印出8进制的前缀
   m   ---- 数字  表示要输出的数据的宽度 
            如果数据本身的宽度 > m 此时按照实际宽度输出 
            如果数据本身的宽度 < m 此时按照m宽度输出,空出来的位置 填空格 默认右对齐 
                                  
   -m   ---- 按指定宽度输出 ,左对齐 (负号表示左对齐)
   0m   ---- 多出来的位置 可以填充0,注意左对齐时不填充0
  .n  ---- n数字 
           %f   --- %.2f //表示保留2位小数 
           %e  ---   %.2e //表示保留2位小数的科学计数法
           %s  --- 表示保留前n个字符 
           
  %ld   ---- long 
  %lld  ---- long long  //整型 
  %hd   ---- half 
  %hhd  ---- half half

注意:占位符与输出参数的关系是一一对应

三、scanf()

功能:从键盘获得数据,转换成相应格式
返回值:匹配到的值的个数
简化格式:scanf(“格式控制字符串”,地址列表);

1. 格式控制字符串

(1)普通字符 ---- 运行时程序时需原样输入

(2)占位符 ---- 与printf()中的一样

辅助控制符:

%md ---- 数据宽度 ---输入宽度   
 注:输入的时候 ,这里要做到精确匹配 
 %f --- float 
 %lf --- double 
 %Lf --- long double
 %ld   --- long 
 %lld  --- long long

注意:

1. scanf 格式控制字符串中 尽量不出现 普通字符,一般只写 占位符 

 2. scanf 的地址列表中,一定是有效的地址 

error:segmentation fault (core dumped) ---- 段错误
原因:访问到了 不能访问的内存空间 

 3. scanf 输入结束的条件(匹配结束的条件) 
      %d  
      输入:[12a3]
      (1)遇到非法字符 匹配结束 
      (2)遇到空白符---- 空格 回车 tab
      (3)超过指定的宽度 结束 
      scanf("%3d",&a);
   4. scanf的格式控制字符串中,如果出现 空白符 ,表示匹配任意多个空白符  
     因此:scanf(“.....\n”)这样的格式要避免使用!
 %*c  表示 匹配一个数据项 但是并不把这个数据给到任何一个变量中 
注意输入字符时,格式要小心,%c可以表示键盘上的任意一个键


 
                             

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值