输入和输出
2016-01-05 16:33
246 查看
(1) 使用标准输入/输出
头文件:<cstdio>变量约定:FILE *fin, *fout;——fin、fout分别代表输入文件和输出文件。把它们换成stdin和stdout,就是从屏幕输入和从屏幕输出。“1.5 字符串操作”也使用了同样的变量。
输出字符串或变量的值:printf("格式字符串", ……);
或fprintf(fout,
"格式字符串", ……);
格式字符:“%”后连接一个字母。
字符 | 含义 | 字符 | 含义 |
d | 整数[1] | e, E | 用科学记数法表示的浮点数 |
u | 无符号整数 | f | 浮点数 |
o | 八进制整数 | c | 字符 |
x, X | 十六进制整数(小写、大写) | s | 字符串(字符数组) |
%5d:5位数,右对齐。不足5位用空格补齐,超过5位按实际位数输出。
%-5d:5位数,左对齐。不足5位用空格补齐,超过5位按实际位数输出。
%05d:5位数,右对齐。不足5位用'0'补齐,超过5位按实际位数输出。
%+d:无论是正数还是负数,都要把符号输出。
%.2f:保留2位小数。如果小数部分超过2位就四舍五入,否则用0补全。
输入到变量
读取不含空白的内容:scanf("格式字符串", &……);
或fscanf(fin, "格式字符串", &……);
① 格式字符和printf基本一致。
② 不要忘记“&”!printf传的是值,scanf传的是地址!
③ scanf和fscanf的返回值是:成功输入的变量个数。fscanf返回EOF,表示文件结束。
④ scanf和fscanf忽略TAB、空格、回车。遇到这些字符它们就停止读取。
读取单个字符:fgetc(fin);
首先要判断它是否为EOF(文件结束)。如果不是,就可以用强制类型转换变成char。
读取到行末时,要注意对换行符的处理。
Windows、Linux、Mac的回车字符是不同的。Linux是'\n',Mac是'\r',Windows下是两个字符——'\r'和'\n'。
(2) 使用流输入/输出
头文件:<iostream>输入到变量:cin>>n;
输出到屏幕上:cout<<a;
可以连续输入、输出,如cin>>n>>m;
cout<<a<<','<<b<<endl;
换行:cout<<endl;
格式化输出:
头文件:<iomanip>
右对齐,长度为n,不足的部分用空格补齐:
cout.width(n);
cout.fill(' '); // 如果想用“0”补齐,就可以把空格换成“0”
cout<<a;
前两行代码,每次输出之前都要调用。
输出成其他进位制数:
8: cout<<oct<<a;
16:
cout<<hex<<a;
其他进位制需要自己转换。
注意,数据规模很大时,流的输入输出速度会变得很慢,甚至数据还没读完就已经超时了。
在进行输入输出之前加入这样一条语句:ios::sync_with_stdio(false);
调用之后,用cin、cout输入输出的速度就和scanf、printf的速度一样了。
[1] 在Windows下调试时,用“%I64d”输出long long类型的值。交卷时,由于用Linux测试,要改成“%lld”。
相关文章推荐
- 学习shell script中
- 利用cvGetCols裁剪图像
- JAVA BigDecimal的构造double类型
- MyEclipse8.5配置Maven3.3.9
- 免费真机调试 -- Xcode7以上版本
- lintcode 中等题:minimum window substring 最小子串覆盖
- Python学习笔记8-类的继承 、深度优先、广度优先
- HTTP协议
- 2. 工厂设计模式
- JAVA不使用第三方jar发送HTTP请求,并接受返回内容
- 消息队列实现数据同步
- Echarts柱状图js代码
- linux卸载软件
- Java SE 第十六讲----面向对象特征之多态
- Instance Nine:使用Transaction(事务) 手动提交,自动回滚
- Python学习笔记8-类的继承 、深度优先、广度优先
- 卷积神经网络初探 | 数据科学家联盟 http://dataunion.org/20942.html
- 老李推荐:第6章8节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-小结
- iOS声明变量用大括号和@property的区别
- 2016年1月5日 SSH学习笔记