本文主要是介绍标准输入与输出与格式控制符,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
标准输入与输出
标准输入与输出与格式控制符的故事
文章目录
- 标准输入与输出
- 一、 printf标准输出(格式化输出)
- 1.1、`printf()`函数
- 1.2、格式控制符
- 1.2.1 -对齐方式举例
- 1.2.2 m.n:指定域宽和精度
- 1.3、常见的格式控制符
- 示例
- 二、标准输入
- 2.1 函数说明
- 2.2 示例代码
- 2.3 详细解释
一、 printf标准输出(格式化输出)
标准输出(格式化输出)是指将内容输出到屏幕(终端),对应的设备文件为标准输出设备文件。常见的函数是printf()
。下面是关于printf()
的语法点和格式控制符的详细说明:
1.1、printf()
函数
printf()
用于格式化输出数据到标准输出(通常是屏幕)。其基本语法如下:
printf("格式字符串", 参数1, 参数2, ...);
1.2、格式控制符
格式控制符用于指定输出的格式。以下是详细的格式控制符说明:
%
:格式化的开头标记。-
:对齐方式,向左对齐(空格在右);如果没有此标记,则默认向右对齐(空格在左)。m.n
:指定域宽和精度,其中m
表示域宽(需要的字符数),n
表示精度(默认精度为6)。如果m
的值比实际数据小,则按实际输出,否则用空格填补。
1.2.1 -对齐方式举例
#include <stdio.h>int main() {int num = 42;printf("右对齐,默认:'%5d'\n", num);printf("左对齐,使用'-':'%-5d'\n", num);return 0;
}
输出结果:
右对齐,默认:' 42'
左对齐,使用'-':'42 '
可以看到,右对齐时数字在右侧,左侧填充空格;左对齐时数字在左侧,右侧填充空格。
1.2.2 m.n:指定域宽和精度
m表示域宽,n表示精度。以下是几个具体的例子:
复制代码
#include <stdio.h>int main() {float num = 3.14159;printf("默认精度:'%f'\n", num);printf("指定精度两位:'%.2f'\n", num);printf("指定域宽和精度:'%8.2f'\n", num);printf("左对齐指定域宽和精度:'%-8.2f'\n", num);return 0;
}
输出结果:
默认精度:'3.141590'
指定精度两位:'3.14'
指定域宽和精度:' 3.14'
左对齐指定域宽和精度:'3.14 '
可以看到:
默认精度为6位小数。
%.2f指定精度为两位小数。
%8.2f指定域宽为8个字符,精度为两位小数,右对齐。
%-8.2f指定域宽为8个字符,精度为两位小数,左对齐。
1.3、常见的格式控制符
-
整型
%d
:十进制整数。%md
:指定域宽的十进制整数。%ld
:长整型十进制整数。%u
:无符号十进制整数。%lu
:长无符号十进制整数。
-
八进制
%o
:八进制整数。%#o
:带前缀0
的八进制整数。
-
十六进制
%x
:小写十六进制整数。%#x
:带前缀0x
的小写十六进制整数。%#X
:带前缀0X
的大写十六进制整数。
-
字符
%c
:字符。
-
字符串
%s
:字符串。
-
浮点数
%f
:单精度浮点数。%.nf
:指定精度的单精度浮点数,n
表示精度。%lf
:双精度浮点数。%Lf
:长双精度浮点数。
-
地址
%p
:指针地址。
示例
#include <stdio.h>int main() {int num = 123;float fnum = 123.456;char ch = 'A';char str[] = "Hello, World!";long lnum = 1234567890;unsigned int unum = 12345;void *ptr = #printf("十进制整数: %d\n", num);printf("指定域宽的十进制整数: %5d\n", num);printf("单精度浮点数: %.2f\n", fnum);printf("字符: %c\n", ch);printf("字符串: %s\n", str);printf("长整型十进制整数: %ld\n", lnum);printf("无符号十进制整数: %u\n", unum);printf("指针地址: %p\n", ptr);return 0;
}
注意事项:
- 使用格式控制符时,需要确保类型和参数匹配。
m
和n
用于控制输出的宽度和精度,对于对齐和填补空格有很大的作用。- 特殊格式控制符(如
#
)可以用于显示进制前缀。
二、标准输入
概念:标准输入一般指的是键盘
的设备文件,从键盘获取数据就是标准输入。
2.1 函数说明
-
scanf()
- 头文件:
#include <stdio.h>
- 函数原型:
int scanf(const char *format, ...);
- 参数:
format
:格式化字符串。...
:省略号,根据format
中的格式控制符,对应一个或多个内存地址。
- 返回值:
- 成功:返回实际读取到的项目数。
- 失败:返回0。
- 头文件:
-
getchar()
- 头文件:
#include <stdio.h>
- 函数原型:
int getchar(void);
- 参数:无
- 返回值:
- 成功:返回一个ASCII值,代表获取的字符(
unsigned char
)。 - 失败:返回
EOF
(即-1)。
- 成功:返回一个ASCII值,代表获取的字符(
- 头文件:
2.2 示例代码
#include <stdio.h>int main(int argc, char const *argv[]) {int num = 0;char c = '0';// 使用scanf获取整型输入int ret_val = scanf("%d", &num);while(getchar() != '\n'); // 清空由scanf留下的缓冲区内容printf("返回值:%d , 获取的数据为:%d\n", ret_val, num);// 使用scanf获取字符输入ret_val = scanf("%c", &c);while(getchar() != '\n'); // 清空由scanf留下的缓冲区内容printf("返回值:%d , 获取的数据为:%c\n", ret_val, c);// 打印EOF的值printf("EOF:%d\n", EOF);return 0;
}
输出示例
输入一个整数和一个字符
100
a
返回值:1 , 获取的数据为:100
返回值:1 , 获取的数据为:a
EOF:-1
2.3 详细解释
-
整型输入:
int ret_val = scanf("%d", &num); while(getchar() != '\n');
scanf("%d", &num)
用于读取一个整型输入并存储在变量num
中。while(getchar() != '\n');
用于清空输入缓冲区,避免残留数据影响后续输入。
-
字符输入:
ret_val = scanf("%c", &c); while(getchar() != '\n');
scanf("%c", &c)
用于读取一个字符输入并存储在变量c
中。- 再次清空缓冲区,确保后续输入正确。
-
打印EOF值:
printf("EOF:%d\n", EOF);
EOF
是一个宏,表示文件结束或错误,值为-1。
注意事项:
- 清空缓冲区:使用
scanf
获取输入后,使用while(getchar() != '\n');
清空缓冲区,避免影响后续输入。 - 错误处理:检查
scanf
的返回值,确保输入操作成功。
这篇关于标准输入与输出与格式控制符的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!