一、数据类型及其对应占位符
| 占位符 | 对应数据类型 | 说明 |
|---|---|---|
| %d | char, short, int | 有符号十进制整数 |
| %ld | long | 有符号长整型十进制 |
| %lld | long long | 有符号长长整型十进制 |
| %u | unsigned short, unsigned int | 无符号十进制整数 |
| %hhu | unsigned char | 无符号字符型十进制 |
| %lu | unsigned long | 无符号长整型十进制 |
| %llu | unsigned long long | 无符号长长整型十进制 |
| %x | 整数类型 | 十六进制(小写字母) |
| %X | 整数类型 | 十六进制(大写字母) |
| %o | 整数类型 | 八进制 |
| %f | float, double | 浮点数(小数形式) |
| %lf | double | 双精度浮点数(scanf专用) |
| %Lf | long double | 长双精度浮点数 |
| %e / %E | float, double | 科学计数法(小写/大写e) |
| %g / %G | float, double | 自动选择%f或%e格式 |
| %c | char | 单个字符 |
| %s | char[], char* | 字符串 |
| %p | void* | 指针地址 |
| %n | int* | 已输出字符数 |
其中数据类型可以在%加以修饰进行格式化打印
| 格式 | 示例值 | 输出结果 | 说明 |
|---|---|---|---|
%.2f | 123.4567 | 123.46 | 保留2位小数 |
%8.2f | 123.4567 | 123.46 | 总宽8位,2位小数 |
%-8.2f | 123.4567 | 123.46 | 左对齐,总宽8位 |
%+8.2f | 123.4567 | +123.46 | 显示正负号 |
%06d | 123 | 000123 | 6位宽度,前导零 |
%8d | 123 | 123 | 8位宽度,右对齐 |
%-8d | 123 | 123 | 8位宽度,左对齐 |
%10s | "Hello" | Hello | 10位宽度字符串 |
%-10s | "Hello" | Hello | 左对齐字符串 |
二、基础输入输出函数
1. 格式化输入 scanf及输出 printf
#include <stdio.h>
int main() {
int age;
float salary;
char name[50];
// 单个scanf输入所有数据
printf("请输入姓名 年龄 工资(用空格分隔):");
scanf("%s %d %f", name, &age, &salary);
// 单个printf输出所有信息
printf("\n--- 员工信息 ---\n姓名: %s\n年龄: %d 岁\n工资: %.2f 元\n", name, age, salary);
return 0;
}
scanf所读取的字符中,不可出现\n,否则程序会忽略缓冲区中的所有空白字符,直到遇到非空白为止
2. getchar-putchar
#include <stdio.h>
int main() {
char ch;
printf("请输入一个字符: ");
ch = getchar();
printf("你输入的字符是: ");
// putchar 输出
putchar(ch);
putchar('\n');
return 0;
}
实践中,常常会因为输入缓冲区中残余'\n'等字符,导致提前结束输入等未预料的情况,可以利用getchar()清空缓冲区
3.getc-putc
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
int id;
float score;
char name[50];
printf("请输入学号 分数 姓名: ");
scanf("%d %f", &id, &score);
getchar(); // 清除分数后的空格
gets(name);
printf("学号: %04d, 分数: %.1f, 姓名: %s\n", id, score, name);
return 0;
}
4gets-puts
#include <stdio.h>
int main() {
char sentence[100];
printf("请输入一句话: ");
gets(sentence);
printf("你输入的是: ");
// puts 输出字符串(自动换行)
puts(sentence);
return 0;
}
1782

被折叠的 条评论
为什么被折叠?



