本篇会加入个人的所谓‘鱼式疯言’
❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言
而是理解过并总结出来通俗易懂的大白话,
我会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.
🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接受我们这个概念 !!!
前言
相比友友们都接触 scanf printf
同时小编在 《用C语言了解文件那些下 ‘流‘ 事》 (http://t.csdnimg.cn/1s3Ek)的那篇文章中也详细介绍过fprintf 与 fscanf 的各种细节。 😍 😍 😍
而在本篇文章中小编会带着大家一起来梳理我们庞大的且常用的 格式化输入输出 的大家庭。 💖 💖 💖
目录
- scanf 与 printf
- sscanf 与 sprintf
- fscanf 与 fprintf
- wscanf 与 wprintf 💕 💕 💕
一.scanf 与 printf
1. printf
printf() 的作用是将参数文本输出到屏幕。它名字里面的 f 代表 format (格式化),表示可以定制输出文本的格式。
<1>. printf 简介
返回类型: int (返回的是输出打印的字符个数)
参数:可变参数 (逗号坐边) 与 类型变量参数 (逗号右边)
作用:从 格式化参数中 打印到 标准输出流(屏幕)
<2>. 栗子说明
#include<stdio.h>
int main(void)
{
printf("Hello\nWorld\n");
printf("Hello\n");
printf("World\n");
return 0;
}
上面命令会在屏幕上输出一行文字 “Hello World” 。
printf() 不会在行尾自动添加换行符,运行结束后,光标就停留在输出结束的地方,不会自动换行。
为了让光标移到下一行的开头,可以在输出文本的结尾,添加一个换行符 \n 。
鱼式疯言
printf() 是在标准库的头文件 <stdio.h> 定义的。
使用这个函数之前,必须在源码文件头部引入这个头文件。
<3>.占位符(可变参数)
printf() 可以在输出文本中指定占位符。
所谓 “占位符”,就是这个位置可以用其他值代入。
#include<stdio.h>
// 输出 There are 3 apples
int main()
{
printf("There are %d apples\n", 3);
return 0;
}
这时爱发问的小爱同学又来特意问,这是咱们替换的🤔 🤔 🤔
怎么那么神奇呢 😲 😲 😲
那么小编就为这位好学的同学解答吧 ! ! !
上面示例中, There are %d apples\n 是输出文本,里面的%d 就是占位符,表示这个位置要用其他值来替换。
占位符的第一个字符一律为百分号% ,第二个字符表示占位符的类型, %d 表示这里代入的值必须是一个整数。
printf() 的第二个参数就是替换占位符的值,上面的例子是整数 3 替换 %d 。
执行后的 输出结果 就是 There are 3 apples 。
<4>. 占位符列举
常用的占位符除了 %d ,还有 %s 表示代入的是字符串。
#include<stdio.h>
int main()
{
printf("%s says it is %d o'clock\n", "lisi", 21);
return 0;
}
上面示例中,输出文本%s says it is %d o’clock 有两个占位符
第一个是字符串占位符 %s
第二个是整数占位符 %d
分别对应printf() 的第二个参数 ( lisi )和第三个参数( 21 )。
执行后的输出就是 lisi says it is 21 o’clock 。
printf() 参数与占位符是一一对应关系,如果有n 个占位符
printf() 的参数就应该有n +1 个。
如果参数个数少于对应的占位符, printf() 可能会输出内存中的任意值。
像类似这些占位符在我们C语言中是很多的
小编还特意整理了一下常用的占位符,需要的宝子们可以自取哦 😊 😊 😊
• %a :十六进制浮点数,字母输出为小写。
• %A :十六进制浮点数,字母输出为大写。
• %c :字符。
• %d :十进制整数。
• %e :使用科学计数法的浮点数,指数部分的e 为小写。
• %E :使用科学计数法的浮点数,指数部分的E 为大写。
• %i :整数,基本等同于%d 。
• %f :小数(包含float 类型和double 类型)。
• %g :6个有效数字的浮点数。整数部分一旦超过6位,就会自动转为科学计数法,指数部分的e
为小写。
• %G :等同于%g ,唯一的区别是指数部分的E 为大写。
• %hd :十进制 short int 类型。
• %ho :八进制 short int 类型。
• %hx :十六进制 short int 类型。
• %hu :unsigned short int 类型。
• %ld :十进制 long int 类型。
• %lo :八进制 long int 类型。
• %lx :十六进制 long int 类型。
• %lu :unsigned long int 类型。
• %lld :十进制 long long int 类型。
• %llo :八进制 long long int 类型。
• %llx :十六进制 long long int 类型。
• %llu :unsigned long long int 类型。
• %Le :科学计数法表示的 long double 类型浮点数。
• %Lf :long double 类型浮点数。
• %n :已输出的字符串数量。该占位符本身不输出,只将值存储在指定变量之中。
• %o :八进制整数。
• %p :指针。
• %s :字符串。
• %u :无符号整数(unsigned int)。
• %x :十六进制整数。
• %zd : size_t 类型。
• %% :输出一个百分号。
<5>. 限制整数宽度
printf() 允许限定占位符的最小宽度。
#include <stdio.h>
int m