目录
在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);