在C语言中,字符输出和格式输出是非常基础的功能,主要通过一些标准库函数来实现。这些函数包括`getchar`、`putchar`、`puts`、`printf`等。以下是对这些函数的详细介绍和示例。
1. `getchar` 和 `putchar`
getchar
: 从标准输入获取一个字符,并返回其ASCII码值。
- 参数: 无
- 返回值: 读取的字符的ASCII码值。如果到达文件结束符或出错,则返回
EOF
。
putchar
: 将一个字符的ASCII码写入标准输出。
- 参数: 要输出的字符的ASCII码值。
- 返回值: 成功写入的字符,如果写入错误,则返回
EOF
。
#include <stdio.h> int main() { char c; puts("请输入一个字符"); c = getchar(); puts("你输入的字符是"); putchar(c); putchar('\n'); // 换行 return 0; }
结果:
请输入一个字符 a 你输入的字符是 a
2. `puts`
puts
: 输出一个字符串,并在末尾自动添加一个换行符。
- 参数: 指向要输出的字符串的指针。
- 返回值: 成功输出时返回非负值,如果发生写错误,则返回
EOF
。
#include <stdio.h> int main() { puts("Hello, World!"); return 0; }
结果:
Hello, World!
3. `printf`
printf
: 向标准输出输出格式化的数据。它支持多种数据类型和格式说明符。
- 参数:
const char *format
: 格式控制字符串。- 后续参数: 对应格式控制字符串中的格式说明符的值。
- 返回值: 成功输出的字符数,如果发生输出错误,则返回负值。
示例:
#include <stdio.h> int main() { int a = 10; float b = 3.14; char c = 'A'; char str[] = "Hello, World!"; printf("整数:%d\n", a); printf("浮点数:%f\n", b); printf("字符:%c\n", c); printf("字符串:%s\n", str); return 0; }
结果:
整数:10 浮点数:3.140000 字符:A 字符串:Hello, World!
格式说明符
格式说明符用于指定printf
和scanf
函数如何格式化数据。以下是常见的格式说明符:
- 整数类型
%d
:有符号十进制整数%i
:有符号十进制整数%u
:无符号十进制整数%o
:无符号八进制整数%x
:无符号十六进制整数(小写)%X
:无符号十六进制整数(大写)
- 浮点类型
%f
:浮点数(小数形式)%e
:浮点数(科学计数法,小写)%E
:浮点数(科学计数法,大写)%g
:根据数值不同自动选择使用普通表示法或科学计数法(小写)%G
:根据数值不同自动选择使用普通表示法或科学计数法(大写)
- 字符和字符串
%c
:单个字符%s
:字符串
- 指针
%p
:指针地址
- 特殊符号
%%
:输出一个百分号
综合示例
以下是一个使用字符输出和格式输出函数以及格式说明符:代码:
#include <stdio.h> int main() { int a = -10; unsigned int b = 20; float c = 3.14; char d = 'A'; char str[] = "Hello, World!"; printf("有符号整数: %d\n", a); printf("无符号整数: %u\n", b); printf("浮点数: %f\n", c); printf("科学计数法: %e\n", c); printf("字符: %c\n", d); printf("字符串: %s\n", str); printf("指针地址: %p\n", (void*)&a); printf("百分号: %%\n"); return 0; }
结果:
有符号整数: -10 无符号整数: 20 浮点数: 3.140000 科学计数法: 3.140000e+00 字符: A 字符串: Hello, World! 指针地址: 0x7ffc29c6e6ac 百分号: %
转义序列的使用:
在 `printf` 中,有时需要输出特殊字符,如换行符 `\n` 或制表符 `\t`。这些称为转义序列,可以帮助格式化输出更清晰。
示例:
printf("这是一个换行\n这是一个制表\t这是一个回车\r\n");
宽度和精度控制:
在 `printf` 中,可以使用格式控制标志来指定字段的宽度和小数点后的位数。
示例:
int num = 12345; printf("宽度为10:%10d\n", num); // 输出宽度为10的整数 printf("小数点后两位:%.2f\n", 3.14159); // 输出浮点数,小数点后保留两位
格式化字符串:
可以通过拼接多个格式化字符串来输出复杂的文本内容。
示例:
printf("欢迎来到%s的%s,您的余额是%.2f元。\n", "nihao", "shijie", 1000.50);