the c programing language 学习过程7
interact 互动 carriage运费运输 linefeed 换行 redirection改方向 interleaved交叉存取 adequate足够的 untouched原样的 specification 规格diagnostic 诊断的
1文件流由行组成 每行最后有个换行符 如果系统没有这种模式 则一些采取措施使得系统适应 比如在输入端把回车符和换页符改成换行 输出端反向转换
2getchar 读一个字符或者EOF EOF在头文件里的值是-1 但是文件中要测试结尾还是要用EOF
可以使用<来实现输入重新定向
如prog里面有getchar 命令行prog<infile prog就从infile里面读字符了
如otherprog | prog 将打开两个程序并将oprog的标准输出通过管道定向到prog的标准输入
3putchar(int)同上 遇到错误返回EOF
>可以重新定向输出 如 prog > outfile
prog |anotherprog prog标准输出通过管道给到aprog的标准输入
4头文件的函数一般都是宏 以防每次调用函数的开销
5printf的一些说明 printf 返回打印的字符数


6关于字符串的精度 打印 :hello,world: 打印helloworld 冒号作为精度显示

7int sprintf(char *string,char *format,arg1,arg2,...); 把arg1 2 3 按照格式format 输出到字符串string里去 string要足够大放下后面的东西
8void minprintf(char * fmt,...) minprintf由于不需要返回字符,而且其中参数的数量和类型是可变的
这个函数的关键在于如何处理一个名字都没有的参数表 va_list类型变量 该变量将引用各个参数 我们将它称之为ap 参数变量 。
宏va_start初始化为第一个无名参数 在使用AP前这个宏必须要被调用一次 参数表必须包括最少一个有名参数 va_start将最后一个有名参数作为起点
每次调用va_arg返回一个参数和将ap指向下一个参数 va_arg使用一个类型名来决定返回对象类型和指针移动的步长
必须在返回前调用va_end做好必要的清理工作
9scanf 返回0表示下一个字符不匹配 返回EOF表示文件结束 arg1 arg2必须要是指针 返回输入项的个数
sscanf 和sprintf类似 (char *string,char *format,arg1,arg2) 从string格式扫描然后存在arg1 arg2



d i o u和x之前可以加h或者l
我们可以读mm/dd/yy
int month, day, year;
scanf(“%d”/%d/%d",&month,&day,&year) month day year;
25 DEC 1988
char monthname[20] ;int day ,year;
也可以 scanf("%d %s %d",&day,monthname,&year); monthname本来就是地址了
10
cat可以把一串文件名输入到标准输出上
如 cat x.c y.c
fopen可以打开文件,并建立文件和程序的链接和通信 返回一个文件读写操作的指针
文件指针包含缓冲区位置 缓冲区当前字符位置 文件读写状态 是否出错 是否到底等信息
声明 FILE * fp;
FILE *fopen(char *name,char *mode); 其中fp是个文件指针 fopen 是返回一个FILE类型指针耳朵函数
FILE是一个类型名通过typedef定义的
在程序中可以 fp=fopen(name,mode);
name是文件名的字符串 第二个参数是 r read w write(覆盖) a append(添加)部分系统区分文本文件和二进制文件 后者要加b
写和添加不存在文件时 会创建文件 读不存在的文件时候会报错
fopen在发生错误的时候返回NULL(如读没有权限的文件时候 或者读不存在的文件时候)
int getc(FILE *fp) 返回输入流中的下一个字符 当结束和错误时候返回EOF
int putc(int c,FILE *fp) 把字符c写到fp里返回写入字符数 或者报错的EOF 这两都是宏
也可以这么定义
第一个参数指向要读写的指针
int fclose(FILE *fp);很多系统都限制了文件的打开数 不用的时候最好释放fp 对输出文件执行fclose可以把收到的输出写到文件中
stdin stdout也可以关闭 freopen可以打开他们
11错误信息可以用fprintf(stderr,......,......); 其中最好包含程序名信息 即是 argv[0]
exit (0)是正常退出 非0位异常退出 对每个打开的输出文件调用fclose并将缓冲区的输出写到对应文件中;main中的 return expr 等价于 exit (expr) 他的优点是可以从其他函数中调用 而且可以被第五章的这些模式查找程序找到
int ferror(FILE *fp) 如果流fp出现错误 ferror返回一个非零值
int feof(FILE *) 到文件尾了 返回一个非0值
对于重要的大程序来说 应当让程序返回有意义且有用的值
12 char *fgets(char *line,int maxline,FILE *fp) fgets从fp读取下一个输入行包括换行符 最后以\0结尾存入字符数组line里 通常情况 fgets返回line 如果遇到文件尾或者错误 返回NULL
int fputs(char* line,FILE *fp)
the c programing language 学习过程7的更多相关文章
- the c programing language 学习过程8
glean 捡拾落穗; glean insight 深入了解 modeled模型化 peripheral外围的 himogeneous匀称的 intents 意图 excerpt摘录 intende ...
- the c programing language 学习过程6
payroll工资名单 hierarchy分层层次 vexing 使人烦恼的 alignment结盟 semantics 语义 aethetic审美 parameterize 参数化 1结构标记 成员 ...
- the c programing language 学习过程5
lumped 集成总结 mandating托管 consecutively连续地 contiguous临近的 mnemonic记忆力的 mimics 酷似 魔方 bind捆绑 synonym同义词 s ...
- the c programing language 学习过程4
4Functions and Program Structure scratch 刮擦 starting over from scratch从头开始 reside驻留 separately 分别的 f ...
- the c programing language 学习过程3
ControlFlow 控制流 specify 指定 compound statement 复合语句 cryptic有隐含意义的 ambiguity歧义 robust稳健 disintegratio ...
- the c programing language 学习过程2
manipulated 操纵 notations符号 hexadecimal十六进制 precision精度 be concatenated at 把····联系起来 enumerations枚举 ...
- 使用一个数组存储一个英文句子"java is an object oriented programing language"
class fun { public static void main(String[] args) { String str="java is an object oriented pro ...
- The python programing language
Python is an example of high-level language. As you might infer from the name “high-level language”, ...
- Linux下C高手成长过程
建议学习路径: 首先先学学编辑器,vim, emacs什么的都行. 然后学make file文件,只要知道一点就行,这样就可以准备编程序了. 然后看看<C程序设计语言>K&R, ...
随机推荐
- linux_发邮件
如何通过linux发邮件? 邮箱配置文件: /etc/mail.rc 1. 邮箱文件配置 vim /etc/mail.rc # 添加一下数据 set from=beimen@163.com smtp= ...
- linux_运维职责
运维准则: 不要删文件,移动文件,可以复原,一个月后什么事没有,删除 运维人员主要关注哪些方面? CPU:对计算机工作速度和效率起决定性作用(intel amd) 内存: 临时存放数据:容量和处理速度 ...
- Windows核心编程&内存管理
1. 每个进程都有自己的虚拟地址空间,对于32位机器而言,这个地址空间的大小为4GB(2^32 / 1024^3),这个虚拟地址空间只不过是一个内存地址空间, 为了能够正常读/写数据,我们还需要把物理 ...
- java连接mysql以及增删改查操作
java连接数据库的代码基本是固定的,步骤过程觉得繁琐些,代码记起来对我来说是闹挺.直接上代码: (温馨提醒:你的项目提前导入连接数据库的jar包才有的以下操作 ) class DBConnectio ...
- Linux指令--ps
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...
- img标签实现和背景图一样的显示效果——object-fit和object-positon
不知大家在做前端页面的时候,有没有遇到类似这样的问题:有一个不是正方形的图片,可能是宽度大于高度的,也可能是高度大于宽度的,而你又并不想用背景图的方式来做,要实现用img标签来让此图片显示出一个正方形 ...
- https原理及实践
转载请注明出处 安全知识 网络安全问题 数据机密性 在网络传输数据信息时,对数据的加密是至关重要的,否则所有传输的数据都是可以随时被第三方看到,完全没有机密性可言. 数据机密性解决问题思路 利用算法 ...
- JAVA设计模式---命令模式
1.定义: 将“请求”封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象,命令模式也支持可撤销的操作.命令可以用来实现日志和事务系统. 2.实例: 1)需求:设计一个家电遥控器的API,遥控 ...
- ABP官方文档翻译 9.2 Entity Framework Core
Entity Framework Core 介绍 DbContext 配置 在Startup类中 在模块PreInitialize方法中 仓储 默认仓储 自定义仓储 应用程序特定基础仓储类 自定义仓储 ...
- BZOJ 1086: [SCOI2005]王室联邦 [树上分块]
portal 题意: 树分成若干块大小在$[s,3s]$之间,每块有一个根(可以不在块内),所有点到根路径上的点都必须在块内 据说这是一个保证了块大小直径个数的科学分块方法,貌似只有本题有用 我错了 ...