C语言数据输入与输出:格式化函数详解
需积分: 10 137 浏览量
更新于2024-08-16
收藏 328KB PPT 举报
"这篇文档是关于C语言中的格式输入与输出函数的教程,重点介绍了`scanf`和`printf`函数的使用方法。"
在C语言中,数据的输入与输出是通过函数来实现的,而不是像其他一些高级语言那样有专门的I/O语句。在输入输出操作中,`scanf`和`printf`是非常重要的两个函数,它们分别用于从标准输入(通常是键盘)读取数据和向标准输出(通常是显示器)打印数据。
## 1. 格式输入函数 - `scanf`
`scanf`函数的基本格式如下:
```c
scanf(“格式控制串”,地址表)
```
这个函数的功能是按照指定的格式控制串从键盘读取数据,并将其存储到地址表所指向的变量中。例如:
```c
scanf("%d", &a);
```
这行代码会等待用户输入一个整数,然后将其存入变量`a`中。输入完成后,用户通常需要按回车键结束输入。
`scanf`函数支持以下格式字符:
- `%d`: 读取十进制整数
- `%i`: 同 `%d`
- `%o`: 读取八进制整数
- `%x`: 读取十六进制整数
- `%u`: 读取无符号整数
- `%c`: 读取单个字符
- `%s`: 读取字符串
- `%f`: 读取浮点数
- `%e`, `%E`: 读取指数形式的浮点数
- `%g`, `%G`: 读取科学记数法或小数形式的浮点数
- `%%`: 读取并输出一个百分号
## 2. 字符输出函数 - `putchar`
`putchar`函数用于将单个字符输出到显示器。其基本格式如下:
```c
putchar(c)
```
其中`c`可以是字符常量、变量或表达式。例如:
```c
putchar('A');
```
这行代码会输出大写字母"A"。
## 3. 格式输出函数 - `printf`
`printf`函数是C语言中进行格式化输出的主要函数,其基本格式如下:
```c
printf(“格式控制串”,输出表)
```
它能按照指定的格式控制串输出数据,支持多种格式字符,与`scanf`类似。例如:
```c
printf("%d", a);
```
这行代码会将变量`a`的值以十进制整数的形式输出。
`printf`函数的格式控制串包括两种信息:
1. 格式说明:以`%`开头,后面可跟一些修饰符和格式字符,用来指定输出格式。
2. 普通字符或转义序列:这些字符会被原样输出。
## 4. 示例
下面是一些使用`printf`的示例,展示了不同格式字符的使用:
```c
int a = 567;
printf("%d", a); // 输出:567
int b = 255;
printf("%x", b); // 输出:ff
int c = 65;
printf("%o", c); // 输出:101
unsigned int d = 567;
printf("%u", d); // 输出:567
char e = 65;
printf("%c", e); // 输出:A
printf("%s", "ABC"); // 输出:ABC
float f = 567.789;
printf("%e", f); // 输出:5.677890e+02
printf("%f", f); // 输出:567.789000
printf("%g", f); // 输出:567.789
printf("%%"); // 输出:%
```
注意,`printf`函数的格式字符必须是小写,并且格式字符与输出项的个数和顺序应当对应。如果输出项类型与指定的格式不符,C语言会尝试自动转换以符合指定的格式。
举例来说,以下代码可能会导致意外的结果:
```c
unsigned int u = 65535;
printf("u=%d\n", u); // 输出:u=-1
```
因为`%d`用于输出带符号的整数,而`u`是一个无符号整数,当无符号整数超过有符号整数的表示范围时,输出可能会变为负数。
此外,`printf`函数会返回输出的字节数,如果发生错误则返回EOF(-1)。这一点在进行错误检查时可能会用到。
总结,理解和熟练使用`scanf`和`printf`函数是掌握C语言输入输出的关键,它们为程序提供了一种灵活的方式来处理数据的输入和输出。在实际编程中,应根据需求选择合适的格式字符和修饰符,以确保数据正确地被读取和显示。
2011-07-28 上传
2022-07-11 上传
2009-07-10 上传
2023-10-15 上传
2023-05-10 上传
2024-06-30 上传
2023-05-19 上传
2024-06-22 上传
2023-11-03 上传
无不散席
- 粉丝: 32
- 资源: 2万+
最新资源
- 火炬连体网络在MNIST的2D嵌入实现示例
- Angular插件增强Application Insights JavaScript SDK功能
- 实时三维重建:InfiniTAM的ros驱动应用
- Spring与Mybatis整合的配置与实践
- Vozy前端技术测试深入体验与模板参考
- React应用实现语音转文字功能介绍
- PHPMailer-6.6.4: PHP邮件收发类库的详细介绍
- Felineboard:为猫主人设计的交互式仪表板
- PGRFileManager:功能强大的开源Ajax文件管理器
- Pytest-Html定制测试报告与源代码封装教程
- Angular开发与部署指南:从创建到测试
- BASIC-BINARY-IPC系统:进程间通信的非阻塞接口
- LTK3D: Common Lisp中的基础3D图形实现
- Timer-Counter-Lister:官方源代码及更新发布
- Galaxia REST API:面向地球问题的解决方案
- Node.js模块:随机动物实例教程与源码解析