C的日记-标准输入输出格式和控制

【标准输入函数格式】

基本格式字符:%d:有符号十进制整数;%u无符号十进制整数;%c单个字符;%s字符串(字符存放到数组+结束位);%e实数;。
--------------------------------------------------------------------------------------------------------------------
1.scanf("%d%d%d",&a,&b,&c);
    格式化符【无间隔/有空格隔开/有Tab隔开/\n隔开】时,输入的数据之间都可以使用空格/Tab缩进/Enter来充当字符之间的分隔符
    注:不能使用逗号以及其他符号如3,4,5来进行输入
2.scanf("%d,%d,%d",&a,&b,&c);    
    格式化输入控制符之间有【逗号/分号/其他非空符号】,隔开,则在输入的时候只能采用与格式控制时相同的字符,否则输入3 4 5回车显示3,-9XXXXX ,-9XXXXX,即只能准确获得第一个数值。
3.scanf("%c,%c,%c",&a,&b,&c);
    如果我们输出的是a b c,得到的结果是:[a=a,b=?,c= ]; a b c
    如果我们输出的是a,b c,得到的结果是:[a=a,b=b,c= ];
    如果我们输出的是a,b,c,得到的结果是:[a=a,b=b,c=c]
    比较第一第三可知输入的时候[,]这个格式字符并不算字符;比较第二第三可知在字符输入的时候,空格是占了一个字符的!。那么我们来看看空格当作格式字符的时候算字符么
    scanf("%c %c %c",&a,&b,&c);如果我们输入[a  b  c]中间有两个空格的时候,输出的是[a=a,b=b,c=c]
    反复验证后得知:当输出的格式字符为两个%c一起时,如果%c之间【无间隔】,则输入数据时空格/Tab/\n都当作空格输出;如果有间隔则满足%d格式字符的所有表现;如果混合字符时???
    【混合输入】scanf("%d%c%d");此时%c必输出空格;(P58有问题);
                scanf("%d,%c,%d");此时%c输入符号则结果为符号,不是符号结果为0;
                scanf("%d %c %d");此时%c同%d的输出;
4.在输入%f时,遇到空格、回车、Tab或者非法输入时,编译器认为该数据结束。
5.对于unsigned类型变量可用%u格式输入。
--------------------------------------------------------------------------------------------------------------------
【总结:Scanf输入数据的时候,按照格式控制位的顺序依次给对应的变量赋值,如果格式位应有的格式与控制台输入的不同,编译器从非法的地方开始结束;如果当前格式位的格式不是%c,遇到空格、回车、Tab时就开始进行下一个赋值;如果是%c就把这个当作空格字符;如果遇到规定格式就必须按照规定的格式书写】
--------------------------------------------------------------------------------------------------------------------

【输入输出格式控制】通过附加格式说明符

[输出]
1.%md。这个m指定输出数据的宽度,小于宽度在左侧补空格(右对齐),大于等于宽度正常输出(左对齐)。
2.%od。将当前格式按照8进制输出。
3.%x。以16进制数输出整数,不会出现负数。
4.%u。用来输出无符号数,有符号数和无符号数在合法区间内可以相互转换。
5.%mc。用来指定输出字符宽度,同%md。
6.%ms。指定输出字符串列数,同%md。
    %-ms。长度小于m,左对齐;大于等于m,左对齐。
    %m.ns。小于m右对齐,大于m左对齐,只取n列。
    %-m.ns。左对齐,列数大于n取出左侧n列,小于n增加列数只到=n。
    [总结:-ms一定左对齐,ms一定右对齐,m是指输出的列数,n是指从左到右截取的列数]
7.%m.nf。m指定输出实数列数,n指定该实数小数的位数,其他与上面的相同。
[输入]
1.%md。指定输入数据所占列数,编译系统自动截取所需数据。
2.%*md。指定截取时先要跳过的列数,如scanf("%3d %*2d %2d",&a,&b,&c); 若输入123456789,则a=123,b=67,c=89。

时间: 2024-10-28 16:44:45

C的日记-标准输入输出格式和控制的相关文章

c语言中输入输出格式的控制

一.输入格式的控制 scanf函数中格式字符: (1)d,i:用来输入有符号的十进制中 (2) u:用来输入无符号的十进制整数 (3)o:用来输入无符号的八进制整数 (4)x,X:用来输入无符号的十六进制整数(大小写作用相同) (5)c:用来输入单个符号 (6) s:用来输入字符串,将字符串送到一个字符数组中,在输入时以非空白字符开始,以第一个空白 字符结束.字符串以串结束标志'\0'作为其最后一个字符 (7)f:用来输入实数,可以用小数形式或者指数形式输入 (8)e,E,g,G:与f作用相同,

C语言中对输入输出格式的控制

格式化输出的控制 #include<stdio.h> int main(void){ float a=111123.681111f; printf("%1.3f",a); return 0; } 结果:111123.680 所以1.3只是针对小数部分的. 格式化输入 #include<stdio.h> int main(void){ int a=0; scanf("%8d\n",&a); printf("%1d\n"

解读:标准输入/输出格式

输入格式类InputFormat 用于描述MR作业的输入规范,主要功能:输入规范检查(比如输入文件目录的检查).对数据文件进行输入切分和从输入分块中将数据记录逐一读取出来.并转化为Map输入的键值对. getSplits()方法返回List<InputSplit>集合,作用是将输入文件在逻辑上划分为多个输入分片. createRecordReader()方法返回一个RecordReader对象,该对象用来将InputSplit解析成若干个key/value对.MR框架在Map Task执行过程

C++学习44 格式化输出,C++输出格式控制

在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式输出一个 整数,对输出的小数只保留两位小数等.有两种方法可以达到此目的.一种是我们已经介绍过的使用控制符的方法(详情请查看:C++输入cout与输出cin):第2种是使用流对象的有关成员函数.分别叙述如下. 使用控制符控制输出格式 [例13.2] 用控制符控制输出格式. #include <iostream> #include <iomanip&

C++格式化输出,C++输出格式控制

在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式 输出一个 整数,对输出的小数只保留两位小数等.有两种方法可以达到此目的. 1)使用控制符的方法: 2)使用流对象的有关成员函数.分别叙述如下. 使用控制符的方法 #include <iostream> #include <cstdio> #include <iomanip> using namespace std; int m

《C程序设计语言(第2版&#183;新版)》第7章 输入与输出

输入与输出并非C语言本身的组成部分.本章讲述标准库,重点讲输入/输出,以及介绍字符串处理.存储管理和数学函数: ANSI标准精确定义了这些库函数,所以任何可使用C的系统中都有这些函数的兼容形式:如果程序的系统交互部分仅仅使用了标准库提供的功能,那么就可以不经修改地从一个系统移植到另一个上: 这些库函数得属性分别在十几个头文件中声明.附录B对标准库进行了详细描述. 7.1 标准输入/输出 标准库实现了简单的文本输入/输出模式:文本流由一系列行组成,每一行的结尾是一个换行符:(若系统未遵循此模式,标

小白书练习题5.5.3 排序检索类、

UVA 340 Master-Mind Hints 题意:猜数字游戏,给n个数的序列给你.接下来一行是答案序列.剩下的都是猜测序列.对于每一个猜测序列,统计有多少个数字相同并且位置相同.有多少数字相同位置不同.每一个数字只能用一次. 思路:直接统计可以求出数字相同并且位置相同的哪一些数.在此过程中我加了一个标记数组.标记那些用过的数的位置为1,没用过为0:然后枚举猜测中哪些没用过的数字.去答案序列中找.当数字相等并且答案行中那个数也没用过时.计数加1: 1 #include<cstdio> 2

Spring学习8-SSH+Log4j黄金整合

最下面有log4j的详解及配置步骤 步骤一.导入相应的jar包(具体参看下一篇博文) 步骤二.修改WEB.XML文件,内容如下: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&quo

Commons_logging包 Apache通用日志包

他为Log4JLogger:NoOpLog:LogKitLogger:Jdk14Logger:AvalonLogger提供了一共通用的接口进行调用,使得在使用各种不同的第三方日志包时变得非常简单.SimpleLog:是commons_logging自带的一个控制台输出日志. 可以通过简单的配置使用不同的第三方日志包. 在src根目录下放进commons-logging.properties文件,进行配置使用哪个第三方日志包. #定义了使用的具体第三方的日值包 #org.apache.common