首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(六)

【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(六)

作者头像
艾莉丝努力练剑
发布2025-11-13 10:10:07
发布2025-11-13 10:10:07
2190
举报
文章被收录于专栏:C / C++C / C++

🔥个人主页艾莉丝努力练剑 ❄专栏传送门:《C语言》《数据结构与算法》C语言刷题12天IO强训LeetCode代码强化刷题 🍉学习方向:C/C++方向

前言: 我们在学习过程中会碰到很多很多问题,本系列文章不会博主不会额外再创建一个新的专栏来收录,因为这一系列文章创作的初心主要是针对回顾知识点(遵循遗忘曲线并且根据自身的实际情况可以做出一些计划,回顾知识点很重要)、缓解学习过程中的可能出现的焦虑等等。主包就不另外开一个专栏了,uu们可以把本系列的文章作为【C语言】专栏的后日谈来看。 主包学习能力比较一般,学起语言、算法无论是花费的时间精力还是取得的成效和大佬们完全无法比。主包起步也比较晚,主包正儿八经开始学C++是从今年的4月24号开始的,主包学习能力真的很一般,C语言这个基础也不扎实,看主包文章的诸位一定是比主包要强的,但主包学习过程中碰到的麻烦、思考、和做的知识点回顾对大家还是有用的。



正文

三、知识点回顾

(九)占位符
1、scanf和printf

scanf 和 printf ——>表示可以定制输出文本的格式。

这个“f” 是format,格式化的意思。

我们这里也是举个例子:

代码语言:javascript
复制
printf("Hello\n");
printf("World\n");
printf("Hello\nWorld\n");

我们来看一看getchar和putchar——

代码语言:javascript
复制
getchar();
//光标的闪烁
// //读取一个字符
// //输入一个字符,输出
//getchar只针对字符,只能读字符
//putchar只能输出字符
代码语言:javascript
复制
getchar//读取
putchar//输出
代码语言:javascript
复制
#include<stdio.h>

int main()
{
	int ch = getchar();
	printf("%c\n", ch);
	putchar(ch);//把ch打印在屏幕上
	return 0;
}

//占位符的第一个字符一律为百分号% %s

代码语言:javascript
复制
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。

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打印, 不要交错,要匹配。

3、总结

在C语言中,占位符主要用在 printf 和 scanf 等函数中,用于格式化输入输出。每个占位符都对应一种数据类型,并控制如何将变量转换为字符串进行显示或读取。

(1)常见的输出占位符

以下是一些常用的输出占位符及其用途:

  • %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)。
  • %%:用于输出一个百分号本身。

例如,下面是一个简单的程序展示如何使用这些占位符:

代码语言:javascript
复制
#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;
}
(2)输入占位符

在 scanf 函数中,占位符用于从标准输入中读取特定类型的值。常见的输入占位符包括:

  • %d:读入十进制整数。
  • %i:读入十进制、八进制或十六进制整数。
  • %u:读入无符号十进制整数。
  • %f%F%e%E%g%G:用于输入实数,可以是小数形式或指数形式。
  • %c:读入一个字符。
  • %s:读入一个字符串,遇到空格、制表符或换行符时停止。
  • %p:读入一个指针。
  • %o:读入八进制整数。
  • %x%X:读入十六进制整数。
  • %[]:扫描字符集合,常用于指定允许输入的字符范围。
  • %%:读入一个百分号本身。

以下是一个使用 scanf 的示例:

代码语言:javascript
复制
#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;
}
(3)占位符的修饰符

还可以通过修饰符来进一步控制占位符的行为,例如:

(1)宽度指定:可以在占位符前加上数字,表示最小字段宽度。例如,%10d 表示至少占用10个字符宽度输出整数。 (2)精度指定:对于浮点数,可以通过 .n 指定小数点后的位数,如 %.2f 表示保留两位小数。 (3)左对齐:默认情况下,输出是右对齐的;如果希望左对齐,可以在宽度前面加 -,如 %-10s(4)前缀修饰符:如 %ld 表示长整型,%lf 表示双精度浮点数等。

(4)注意

(1)使用占位符时,必须确保变量类型与占位符匹配,否则可能导致未定义行为; (2)在 scanf 中,除了 %c 和 %[...]外,其他占位符会自动跳过前导空白字符; (3)如果需要读取包含空格的字符串,应使用 fgets 而不是 scanf("%s",……)

4、回顾
代码语言:javascript
复制
printf("%10.2f\n", 123.4567);
printf("%*.*f\n", 10, 2, 123.4567);

像这两个代码其实是同理的,我们通过画图理解一下——

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


结尾

下一篇文章的更新应该会隔蛮长一段时间,会回顾scanf、switch语句等知识点,敬请期待!

只要是主动学习,只要你有兴趣,只要你喜欢学,到处是时间。

往期回顾:

【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(五)

【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(四)

【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(三)

【计算机语言选择规划】全是干货!从难度、就业、岗位选择、薪酬待遇、未来发展等方面详解第一门主流语言学习的选择

【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(二)

【C语言】学习过程教训与经验杂谈:思想准备、知识回顾(一)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 正文
    • 三、知识点回顾
      • (九)占位符
  • 结尾
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档