C语言scanf输入双引号字符,C语言简单记-printf与scanf详解

“C语言简单记”基于我以前学习过程中做过的笔记、随笔,特意整理了一下,只是简单的记录了一些比较重要的知识点,不会去深入探究,面向的是一些有语言基础的人查找阅读,还请见谅,谢谢~~~

当初还是小白的我刚接触C语言,那时候什么都不懂,printf和scanf傻傻分不清楚

.想想当初好傻好天真,哈哈哈!(卖的一手好萌)

printf

1.格式控制符使用说明

printf的格式控制的完整格式:

"% - 0 m.n l或h 格式字符"

下面对组成格式说明的各项加以说明:

%:表示格式说明的起始符号,不可缺少。

-:有-表示左对齐输出(右侧补空格),如省略表示右对齐输出(左侧补空格)。

0:有0表示指定空位填0,如省略表示指定空位不填。

m.n:m指域宽,即对应的输出项在输出设备上所占的字符数。N指精度。用于说明输出的实型 数的小数位数。对数值型的来说,未指定n时,隐含的精度为n=6位。

l或h:l对整型指long型,对实型指double型。h用于将整型的格式字符修正为short型。

格式字符(格式字符用以指定输出项的数据类型和输出格式)

d格式:用来输出十进制整数。有以下几种用法:

%d %hd %ld

o格式:以无符号八进制形式输出整数

x格式:以无符号十六进制形式输出整数

f格式:用来输出实数(包括单精度,双精度),以小数形式输出

u格式:以无符号十进制形式输出整数

c格式:输出一个字符

s格式:用来输出一个串。有几中用法

%s:例如:printf("%s","CHINA")输出"CHINA"字符串(不包括双引号)。

%ms:输出的字符串占m列,如字符串本身长度大于m,则突破获m的限制,将字符串全部输出。若串 长小于m,则左补空格。

%-ms:如果串长小于m,则在m列范围内,字符串向左靠,右补空格。

%m.ns:输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧,左补空格,注 意:如果n未指定,默认为0。

%-m.ns:其中m、n含义同上,n个字符输出在m列范围的左侧,右补空格。如果n>m,则自动取n值,即保证n个字符正常输出,注意:如果n未指定,默认为0。

如果是sprintf(desc, "%m.ns", sour);

如果desc空间够的话,会在%m.ns 串 的结尾自动补null 字符,不同于strncpy。

例如 :sprintf(desc, "%.3s", "123456"); desc如果空间>=4字节的话,第4个字节将是null字 符。

2.实型输出问题

%f:不指定宽度,整数部分全部输出并输出6位小数。

// 默认输出6位小数

printf("%f", 3.1415926535f);

输出结果: 3.141593

指定保留多少位小数

// 通过%.nf方式,指定保留多少位小数

printf("%.2f", 3.1415926535f);

输出结果: 3.14

3.实型精度问题

对于单精度数,使用%f格式符输出时,仅前7位是有效数字,小数6位.

对于双精度数,使用%lf格式符输出时,前15位是有效数字,小数6位

进制

float

double

十进制有效位数

7位

15位

二进制有效位数

24位

53位

一个练习引发的血案

要求输出3.1415926535f所有小数

// 尝试通过指定保留位数

printf("%.10f", 3.1415926535f);

输出结果: 3.1415927410

// float有效数字是7位, 多余位数则会显示垃圾数据(不准确)

// 什么是有效位?

printf("%.10f", 314159.26535f);

输出结果: 314159.2500000000

// 尝试指定宽度

printf("%12f", 3.1415926535f);

输出结果: $$$$3.141593 注意$代表空格

// 尝试指定宽度和保留位数

printf("%12.10f", 3.1415926535f);

输出结果: 3.1415927410

// 要想完整输出必须使用double, 因为double类型精度小数点后6位,有效数字是15位

double doubleValue = 3.1415926535; // 注意后面没有f

printf("%.10lf", doubleValue);

输出结果:3.1415926535

scanf函数格式控制符

格式

意义

d

输入一个十进制整数

o

输入一个八进制整数

x

输入一个十六进制整数

i

输入一个有符号或无符号的十进制、八进制、十六进制整数

u

输入一个无符号十进制整数

f 、e或E、 g或G

输入一个小数形式或指数形式的浮点数

c

输入一个字符

s

输入一个字符串

获取整形数据

// 1.定义变量用于接收输入数据

int num = 0;

// 2.利用scanf函数接收用户输入数据

scanf("%d", &num);

// 3.打印验证结果

printf("num = %d", num);

获取实数型数据

// 1.定义变量用于接收输入数据

float num = 0;

// 2.利用scanf函数接收用户输入数据

scanf("%f", &num);

// 3.打印验证结果

printf("num = %d", num);

注:不加\n,需要加&取地址

非法的输入

除"空格","回车","tab"之外, 如果输入的数据和scanf接收的数据不匹配将会自动结束接收

更多关于iOS学习开发的文章请登陆我的个人博客www.zhunjiee.com,欢迎前来参观学习

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值