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的更多相关文章

  1. the c programing language 学习过程8

    glean 捡拾落穗; glean insight 深入了解 modeled模型化 peripheral外围的 himogeneous匀称的 intents 意图  excerpt摘录 intende ...

  2. the c programing language 学习过程6

    payroll工资名单 hierarchy分层层次 vexing 使人烦恼的 alignment结盟 semantics 语义 aethetic审美 parameterize 参数化 1结构标记 成员 ...

  3. the c programing language 学习过程5

    lumped 集成总结 mandating托管 consecutively连续地 contiguous临近的 mnemonic记忆力的 mimics 酷似 魔方 bind捆绑 synonym同义词 s ...

  4. the c programing language 学习过程4

    4Functions and Program Structure scratch 刮擦 starting over from scratch从头开始 reside驻留 separately 分别的 f ...

  5. the c programing language 学习过程3

    ControlFlow  控制流 specify 指定 compound statement 复合语句 cryptic有隐含意义的 ambiguity歧义 robust稳健 disintegratio ...

  6. the c programing language 学习过程2

    manipulated 操纵  notations符号 hexadecimal十六进制 precision精度 be concatenated at 把····联系起来 enumerations枚举  ...

  7. 使用一个数组存储一个英文句子"java is an object oriented programing language"

    class fun { public static void main(String[] args) { String str="java is an object oriented pro ...

  8. The python programing language

    Python is an example of high-level language. As you might infer from the name “high-level language”, ...

  9. Linux下C高手成长过程

    建议学习路径:  首先先学学编辑器,vim, emacs什么的都行. 然后学make file文件,只要知道一点就行,这样就可以准备编程序了.  然后看看<C程序设计语言>K&R, ...

随机推荐

  1. eclipse:Workspace in use or cannot be created

    打开eclipse出现:Workspace in use or cannot be created, choose a different one 原因:出现这种情况一般是workspace的配置文件 ...

  2. [JAVA] - 从 m 个元素中随机选中 n 个

    之前业务中曾经遇到过从m个元素中选取 n 个的需求,当时只是跑循环根据长度进行随机选取,然后放入 Set 中去重,一直到收集到足够的个数. 这样做的缺点很明显,当剩下的元素个数越少的时候,选取的元素越 ...

  3. 使用jQuery的ajax调用action的例子

    直接使用ajax请求会比较繁琐,但是jQuery为我们提供了简单使用ajax的方法. 下面是一个在jQuery easyUI中,利用ajax请求,使下拉菜单关联文本框的例子.其中ajax请求就是8-1 ...

  4. 【原创】python实现视频内的face swap(换脸)

    1.准备工作,按博主的环境为准 Python 3.5 Opencv 3 Tensorflow 1.3.1 Keras 2 cudnn和CUDA,如果你的GPU足够厉害并且支持的话,可以选择安装 那就先 ...

  5. SSE图像算法优化系列十五:YUV/XYZ和RGB空间相互转化的极速实现(此后老板不用再担心算法转到其他空间通道的耗时了)。

    在颜色空间系列1: RGB和CIEXYZ颜色空间的转换及相关优化和颜色空间系列3: RGB和YUV颜色空间的转换及优化算法两篇文章中我们给出了两种不同的颜色空间的相互转换之间的快速算法的实现代码,但是 ...

  6. 【转】wget

    wget 下载整个网站,或者特定目录 需要下载某个目录下面的所有文件.命令如下 wget -c -r -np -k -L -p www.xxx.org/pub/path/ 在下载时.有用到外部域名的图 ...

  7. 二叉查找树(Binary Sort Tree)(转)

    二叉查找树(Binary Sort Tree) 我们之前所学到的列表,栈等都是一种线性的数据结构,今天我们将学习计算机中经常用到的一种非线性的数据结构--树(Tree),由于其存储的所有元素之间具有明 ...

  8. KVM详情

    KVM介绍 Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中.它使用Linux自身的调度器 ...

  9. vim批量注释

    vim批量注释 法一.在vim中 :20,30 s/^/#/g 20-30行 用 # 注释掉.(python是用#注释地---) :20,30 s/^#//g 20-30行 取消注释 法二. 1.多行 ...

  10. 这可能是我觉得最折腾的C++环境配置(编码+调试)--mac+eclipse

    本着造福大众的心态,万一可能有人喜欢这种环境开发呢对吧~~折腾了一天,又是谷歌又是百度,讲真遇到报错问题搜出的资料挺少的,看来用这类环境开发C++的人不多,毕竟谁没事干放着xcode,vscode不用 ...