C语言程序设计格式化输出,C语言程序设计 学习笔记 格式化输入输出

格式化输入:

scanf:

%[flag]type

格式化输出:

printf:

%[flags][width][.prec][hIL]type

对于flags,表示的是标志,可以使用的内容如下:

3dc94253ae4f33aff515475a281e35db.png

举例事例:

int main(){

printf("%9d\n",123);

printf("%-9d\n",123);

return 0;

}

输出结果是:

123

123

第一行比第二行左边多了6个空格,事实上就是将我要输出的东西长度固定为9,并且向右靠拢

(空格+字符长度(<=9的情况下)=9)

+的意思就显示其正负号(如果本身数字是负数,如

printf("%+d\n",-123));

那么最终输出还是-123,和没有+号一样

如果是

printf("%09d\n",123);

那么会在空余部分用0补上,输出结果就是000000123

width和.prec:

74268276af4b1364b3f1ae56a49e1f3a.png

对于number.number的使用,如

printf("%9.2f",123.0);

那就是输出长度为9,保留两位小数点的字符,输出结果为:

123.00

算上空格、数字、小数点 长度为9

对于*的使用,可以理解为如下:

星号使用的是下一个参数,如:

printf("%*d\n",6,123);

那么这个星号指的就是下一个参数6,然后%d仍然是123.

这对要求格式输出的时候很有用,尤其当我的参数是变量的时候

hlL 修饰符 表示修饰类型

0cb940fb2d7cadc710dc54d47899ce57.png

hh → 把我要输出的东西当作单个字节来输出

h → 当作short输出

以此类推

(感觉用到的不多,编译器不同出现的结果也不同)

type总结

815289d29494749a2e0ed612d25f64c8.png

scanf的flag

f02400491ce95e86933c00fa365f9419.png

对于跳过的使用,如下:

#include

int main(){

int num;

scanf("%*d%d",&num);

printf("%d\n",num);

return 0;

}

此时,输入123_456(_是空格),num跳过了123,读取到的是456,所以printf出来的就是456

scanf的type

93faa18426b8cb224dba22414128f810.png

对于scanf的%i,这个比%d更加灵活,举例如下:

int main(){

int num;

scanf("%i",&num);

printf("%d\n",num);

return 0;

}

如果我输入的是123,那么还是输出123,

如果我输入的是0x12,显然这是16进制,系统会自动将其转化成10进制输出,结果为18

如果我输入的是012,系统会辨认出这是8进制,将其转为10进制输出,结果为10

[…] 所允许的字符

f48ff6dfaf40376f9e063584ee8eb152.png

上面是我要输入的东西,对于下方的scanf进行解释:

最开始出现的%*[^,] 我们读取的是$GPRMC,由于带星号,所以这是跳过接收,直到出现逗号为止(不包含这个逗号)

其次一个逗号,格式要求

再接下来的%[^,] 读取字符串,直到逗号为止,那就是读入了004319.00,后方代码以此类推。

scanf和printf的返回值

1.读入的项目(item)数

2.输出的字符数

int main(){

int i1,i2;

int num;

i1 = scanf("%d",&num);

i2 = printf("%d\n",num);

printf("%d:%d\n",i1,i2);

return 0;

}

输入1234,输出的i1,i2行是

1:5

1代表我读入的项目数是1(一个num)

5代表我输出的字符数是5(1、2、3、4、\n)

在要求严格的程序中,应该判断每次调用scanf或printf的返回值,从而了解程序运行中是否存在问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值