- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
03输入输出
第三讲 输入输出
int getchar(void)
写一个程序输入一个字符,判断是Y还是N
#includestdio.h
int main(){
char t = getchar();
if (t == Y) {
printf(YES);
} else if (T == N) {
printf(NO);
}
else {
printf(UNKNOWN);
}
}
编译运行
再写一个程序,先输入1个字符判断是Y还是N,再输入一个字符,判断是1还是0
#includestdio.h
int main(){
char t = getchar();
if (t == Y) {
printf(YES);
} else if (T == N) {
printf(NO);
} else {
printf(UNKNOWN);
}
t = getchar();
if (t == 1) {
printf(1);
} else if (T == 0) {
printf(0);
} else {
printf(UNKNOWN);
}
}
编译运行后结果是不是和想象中不太一样?
因为键盘是低速I/O(Input/Output,输入输出)设备,如果每个按键都直接发送给程序去处理,效率会比较低,因此操作系统做了一个处理,在每次按下回车键以后才将一整行的按键值插入到程序的输入流中。
初学程序的人很容易忽略的一点是,这个回车也是一个按键,作为一个回车符(\n)被插入到输入流中去了。
所以你输入Y回车以后,实际上输入流中有2个字符Y\n,第一次getchar()检测到输入流中没有字符,于是没有直接返回,而是等你输入回车以后才从输入流中取得一个Y返回,第二个getchar()因为检测到输入流中还有数据,于是马上取得一个\n返回了,因此实际上第二个getchar()并不是跳过去了,而是返回了一个回车。
所以只要稍微修正一下:在第一次getchar()后面再加一句getchar();把这个回车符拿走就可以了。
接下来了解一下管道。
刚刚说到:stdin,stdout,stderr默认对应的是键盘,屏幕,屏幕。实际上可以很容易地把它们修改为对应一个文件,甚至是对应另一个文件的输入。
假设你有一个文件D:\code\abc.txt,内容是123
刚刚的那个输入程序就可以用
D:\code getchar.exe abc.txt
而输出程序可以这么用:
D:\code putchar.exe def.txt
D:\code type def.txt
不要动这个def.txt,再试试
D:\code putchar.exe def.txt
当文件不存在的时候创建文件;如果文件存在则清空文件。然后写入。
当文件不存在的时候创建文件;如果文件存在则附加到文件末尾。
接下来试试这个
D:\code type abc.txt | getchar.exe
这个竖线是和反斜杆\ 同一个按键,按住Shift就可以
这个 | 就是个管道,前后各是一个命令
把前一个命令的输出当作后一个命令的输入
总结一下,管道有4种
输入重定向
输出重定向(覆盖)
输出重定向(追加)
| 输入输出重定向(管道)
嗯,输入输出的基本知识应该都没问题了
接下来就是scanf和printf了
首先,C程序有几种基本类型,应该有印象吧?
char, int(short, long), float (double) (还有unsgined前缀) …
在scanf/printf里面,每种类型都对应一个符号
或者说要以一种格式输入输出一种类型的时候,都要给出一个符号
char -- c
int -- d
long -- ld
float -- f
double-- lf
这里有非常多的具体格式,我一时也不能全部说清楚,一则太多,二则说起来很枯燥,所以捡重点的说;详细的列表可以参考书中的内容。
scanf的函数原型是
int scanf(char *, ...);
表示scanf的输出参数是一个字符串和接下来的可选参数
scanf的返回值是int,
输出参数则是一个int
比如
int a;
scanf(%d, a);
表示让scanf从stdin读入一个%d类型的值存到地址a指向的内存空间。
要记得,scanf的输入参数首先是一个字符串,然后是一系列指针。
至于为什么是指针,这个在以后说到指针的时候再具体解释
要记得,scanf的输入参数首先是一个字符串,然后是一系列指针。
写一个简单的程序分别输入一个整数、一个字符、一个浮点数并输出。
int用的是%d, char用的是%c, float用的是%f,不要写错。
s
您可能关注的文档
- (B-04表)整改通知单.doc
- (一课一练)一元一次不等组.doc
- (bjtu数据库应用基础)ch06实体联系模型.ppt
- (7.1)§1-3(第1课时).ppt
- (上课用)向心力.ppt
- (2011年中考数学试题分类)函数与一次函数.doc
- (新)2009年读写2级练习A5卷-djy.doc
- (武振国)春来九年级上学期期末教学质量检测试卷.doc
- (汤月华)教学方式的变革.doc
- (股票大讲堂)第122节头部特征一.doc
- 2025年天津市冷链物流基地配套道路建设可行性研究报告.docx
- 2025年天津市母婴护理会所专业化服务升级路径可行性研究报告.docx
- 2025年成都市私立医院医美抗衰中心创建可行性研究报告.docx
- 2025年成都市淡化海水在城市道路清洗领域的应用可行性研究报告.docx
- 2025年上海市环卫厨余垃圾生物处理技术应用可行性研究报告.docx
- 2025年天津市花西子针对户外运动妆容的可行性.docx
- 2025年上海市生物发电于秸秆炭化还田协同发电的可行性研究.docx
- 2025年天津市物造纸在可降解农用地膜领域的应用可行性研究报告.docx
- 2025年天津市无人值守充电站智能运维可行性研究报告.docx
- 2025年天津市竹荪种植连作障碍防治技术可行性研究报告.docx
文档评论(0)