IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 翁恺老师C语言程序设计网课(14) -> 正文阅读

[C++知识库]翁恺老师C语言程序设计网课(14)

13.1.1 格式化输入输出
13.1.2 文件输入输出
13.1.3 二进制文件
13.2.1 按位运算
13.2.2 移位运算
13.2.3 位运算例子
13.2.4 位段

13.1.1 格式化输入输出

从第一天学c语言就接触到了printf和scanf.下面彻底研究下占位符%d有多少细节。
printf: %[flags][width][.prec][hIL]type
flag:标志,有以下几种

flag含义
-左对齐(和width一起用)
+输出前面带正负号
(space)正数留空
0空格用0填充(不能和-同时使用)

width(宽度)或prec

width或prec含义
number最小字符数(包括小数点)
*下一个读入的参数是字符数
.number小数点后面的位数
.*下一个参数是小数点后的位数

hIL:类型修饰符

类型修饰含义
hh单个字节
hshort
llong
lllong long
Llong double

type:类型

type用于
i或dint
uunsigned int
o八进制
x十六进制
X大写字母的十六进制
f或Ffloat, 6
e或E指数
gfloat
Gfloat
a或A十六进制浮点
cchar
s字符串
p指针
n读入/写出的个数

在这里插入图片描述
%n是当操作做到这里时,已经输出了多少个字符,并且填到指针所指的变量里。
scanf: %[flag]type

flag含义
*跳过
数字最大字符数
hhchar
hshort
llong, double
lllong long
Llong double
type用于
dint
i整数,可能是十六进制或八进制
uunsigned int
o八进制
x十六进制
a, e, f, gfloat
cchar
s字符串(单词)
[…]所允许的字符
p指针

%i会根据输入(如0x12、012)来判断是十六进制还是八进制还是十进制。
[…]举例
GPS中会读到一串字符,用逗号分隔
在这里插入图片描述
占位符%[^,]表示读入逗号前的所有字符
printf和scanf是有返回值的。scanf是返回几个item,即这次读入了几个变量;而printf则是这次输出了多少个字符。因此当我们面对要求严格的程序,比如长期运行的大程序,就需要判断每次调用scanf和printf的返回值来了解程序运行中是否会存在问题。

13.1.2 文件输入输出

我们之前运行程序的时候在命令行里输入./test(test是文件名)即可。
对文件做输入输出:./test > 12.out,然后再输入scanf标准输入的内容,但是程序没有printf标准输出了。但是打开12.out文件(输入more 12.out),会输出标准输入和标准输出。
同样,当我们输入 cat >12.in ,输入标准输入,然后再Ctrl D结束程序,再查看12.in文件(输入more 12.in)会输出标准输入。
然后运行test文件的时候这样写:./test < 12.in,12.in的内容会输入给./test,然后我们会得到其输出。
(当然还可以./test < 12.in > 12.out,输入是文件,输出也是文件。12.out里也有我们所期望的结果。)
以上是程序运行中的重定向。我们用<来指定一个文件的输入,用>来指定输出到一个文件中。
然而这并不是一般的文件输入输出方式,一般的方式需要做一个FILE,在stdlib.h中已经声明好过。
在这里插入图片描述
用fopen打开文件打开后用fscanf和fprintf函数来读写。

FILE* fp=fopen("file","r");//file是文件名,r表示读
if(fp){//如果没打开,会返回NULL
	fscanf(fp,...);//读文件。省略号的东西和正常的scanf一样了。后面还可以printf
	fclose(fp);
}else{}//无法打开的反馈。如:输出 无法打开文件

直接./test运行即可,会打开12.in然后正常输出。
如果删掉12.in(rm 12.in)就无法打开文件。
fopen第一个参数是文件名的字符串,第二个参数字符串用途如下:

r打开只读
r+打开读写,从文件头开始读/写
w打开只写,如果不存在则新建,如果存在则清空
w+打开读写,如果不存在则新建,如果存在则清空
a打开追加,如果不存在则新建,如果存在不清空,从文件尾开始
在结尾加x只新建,如果文件已存在则不能打开
13.1.3 二进制文件

所有文件最终都是二进制的。文本文件,只是用一种简单的方式可以进行读写的文件。如more, tail 可以打开文件,cat 打开文件或定向到其他文件,vi 做完整的编辑,etc。但是二进制没这么简单。
选择文本还是二进制?
UNIX(和windows一样都是操作系统。)喜欢用文本文件储存数据、配置程序。交互式终端的出现(类似windows的cmd窗口)使得人们喜欢用文本和计算机“交流”。因此,UNIX的shell就提供了一些读写文本的小程序。
windows(更准确要说DOS),个人计算机的制作者并不继承、熟悉UNIX文化(宛如在围墙之外,不熟悉围墙内)全凭自己的理解做出草根文化的DOS,更喜欢用二进制文件。
PC和DOS刚开始的时候能力有限,二进制更加接近底层。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-07-23 10:32:07  更:2021-07-23 10:34:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 4:53:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码