
🔥个人主页:艾莉丝努力练剑 ❄专栏传送门:《C语言》、《数据结构与算法》、C语言刷题12天IO强训、LeetCode代码强化刷题 🍉学习方向:C/C++方向
前言: 我们在学习过程中会碰到很多很多问题,本系列文章不会博主不会额外再创建一个新的专栏来收录,因为这一系列文章创作的初心主要是针对回顾知识点(遵循遗忘曲线并且根据自身的实际情况可以做出一些计划,回顾知识点很重要)、缓解学习过程中的可能出现的焦虑等等。主包就不另外开一个专栏了,uu们可以把本系列的文章作为【C语言】专栏的后日谈来看。 主包学习能力比较一般,学起语言、算法无论是花费的时间精力还是取得的成效和大佬们完全无法比。主包起步也比较晚,主包正儿八经开始学C++是从今年的4月24号开始的,主包学习能力真的很一般,C语言这个基础也不扎实,看主包文章的诸位一定是比主包要强的,但主包学习过程中碰到的麻烦、思考、和做的知识点回顾对大家还是有用的。
scanf 和 printf ——>表示可以定制输出文本的格式。
这个“f” 是format,格式化的意思。
我们这里也是举个例子:
printf("Hello\n");
printf("World\n");
printf("Hello\nWorld\n");
我们来看一看getchar和putchar——
getchar();
//光标的闪烁
// //读取一个字符
// //输入一个字符,输出
//getchar只针对字符,只能读字符
//putchar只能输出字符getchar//读取
putchar//输出#include<stdio.h>
int main()
{
int ch = getchar();
printf("%c\n", ch);
putchar(ch);//把ch打印在屏幕上
return 0;
}//占位符的第一个字符一律为百分号% %s
int main()
{
printf("zhansan says it is 10 o'clock\n");
printf("%s says it is %d o'clock\n", "zhangsan", 10);
return 0;
}
注意:
键盘敲的任何字都会被当成字符,如2会被当成字符2。
%i ≈ %d 整数
下面是博主在单目操作符++、--的前置后置知识点总结,printf函数的一些知识点一文中对占位符的列举,大家可以再回顾一遍,加粗的字重点关注一下——
%a :十六进制浮点数,字母输出为小写。 %A :十六进制浮点数,字母输出为大写。 %c :字符。// char %d :十进制整数。// int %e :使用科学计数法的浮点数,指数部分的 e 为小写。 %E :使用科学计数法的浮点数,指数部分的 E 为大写。 %i :整数,基本等同于%d 。 %f :小数(包含 float 类型、double 类型)。//float——%f,double——%lf %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 类型。 %% :输出一个百分号。//不是转义 %zu:sizeof、strlen。
注意:
有符号整数——%d打印, 无符号整数——%u打印, 不要交错,要匹配。
在C语言中,占位符主要用在 printf 和 scanf 等函数中,用于格式化输入输出。每个占位符都对应一种数据类型,并控制如何将变量转换为字符串进行显示或读取。
以下是一些常用的输出占位符及其用途:
%d 或 %i:用于输出十进制整数。
%u:用于输出无符号整数。
%f:用于输出浮点数,默认情况下会显示小数点后六位2。
%c:用于输出单个字符。
%s:用于输出字符串。
%p:用于输出指针地址,通常以十六进制形式表示。
%n:用于记录已输出的字符数量,并将其存储到对应的整型变量中。
%o:用于输出八进制整数。
%x 或 %X:用于输出十六进制整数,前者使用小写字母,后者使用大写字母。
%e 或 %E:用于输出科学计数法表示的浮点数,分别使用小写 e 和大写 E 表示指数部分。
%g 或 %G:根据数值大小自动选择 %f 或 %e / %E 格式进行输出。
%l:用于表示长整型(如 %ld)或双精度浮点数(如 %lf)。
%L:用于表示长双精度浮点数(如 %Lf)。
%%:用于输出一个百分号本身。
例如,下面是一个简单的程序展示如何使用这些占位符:
#include <stdio.h>
int main()
{
int a = 66;
float f = 2.4;
char c_data = '*';
printf("变量a=%d\n", a); // 输出十进制整数
printf("十六进制变量a=%x\n", a); // 输出十六进制整数
printf("有一个小数点的数据=%.2f\n", f); // 控制小数点后两位
printf("输出一个字符=%c\n", c_data); // 输出字符
return 0;
}在 scanf 函数中,占位符用于从标准输入中读取特定类型的值。常见的输入占位符包括:
%d:读入十进制整数。
%i:读入十进制、八进制或十六进制整数。
%u:读入无符号十进制整数。
%f 或 %F、%e、%E、%g、%G:用于输入实数,可以是小数形式或指数形式。
%c:读入一个字符。
%s:读入一个字符串,遇到空格、制表符或换行符时停止。
%p:读入一个指针。
%o:读入八进制整数。
%x 或 %X:读入十六进制整数。
%[]:扫描字符集合,常用于指定允许输入的字符范围。
%%:读入一个百分号本身。
以下是一个使用 scanf 的示例:
#include <stdio.h>
int main()
{
int num;
float decimal;
char ch;
printf("请输入一个整数、一个小数和一个字符:");
scanf("%d %f %c", &num, &decimal, &ch);
printf("你输入的是:%d, %.2f, %c\n", num, decimal, ch);
return 0;
}还可以通过修饰符来进一步控制占位符的行为,例如:
(1)宽度指定:可以在占位符前加上数字,表示最小字段宽度。例如,
%10d表示至少占用10个字符宽度输出整数。 (2)精度指定:对于浮点数,可以通过.n指定小数点后的位数,如%.2f表示保留两位小数。 (3)左对齐:默认情况下,输出是右对齐的;如果希望左对齐,可以在宽度前面加-,如%-10s。 (4)前缀修饰符:如%ld表示长整型,%lf表示双精度浮点数等。
(1)使用占位符时,必须确保变量类型与占位符匹配,否则可能导致未定义行为; (2)在 scanf 中,除了 %c 和 %[...]外,其他占位符会自动跳过前导空白字符; (3)如果需要读取包含空格的字符串,应使用 fgets 而不是 scanf
("%s",……)。
printf("%10.2f\n", 123.4567);
printf("%*.*f\n", 10, 2, 123.4567);像这两个代码其实是同理的,我们通过画图理解一下——

%10.2f 表示输出字符串中最小宽度为10,所以输出字符串头部有两个空格。

下一篇文章的更新应该会隔蛮长一段时间,会回顾scanf、switch语句等知识点,敬请期待!
只要是主动学习,只要你有兴趣,只要你喜欢学,到处是时间。
往期回顾: