狐狸梦见乌鸦

当坚持成为一种习惯,目标将不在遥远```
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

标准I/O库的学习笔记

Posted on 2011-12-28 18:58  灬啊U  阅读(236)  评论(0编辑  收藏  举报

2011.12.28嵌入式学习之标准I/0库的学习笔记

一.计算机的硬件组成

按运算器和控制器,存储器,输入输出设备。

二.I/0    标准和文件I/0   标准I/0 是高级磁盘I/0(基于文件I/0), 文件I/0是低级磁盘I/O;

系统调用  System C  调用的接口----文件I/0   封装----库   POSIX 类UNIX可移植的

ANSIC                        POSIX

带缓冲(ANSIC)          不带缓冲 (POSIX)  

流指针                         文件操作符

3.文件的类型:

 七种:b  c  d  –  l  s  p     普通文件又分为: 可执行(二进制文件), ASCII 范围 0—255

 

文件I/0 要操作的是  d ,l,普通文件的操作。。。(重点)

 

4.文件系统类型。。。

磁盘文件系统   ext2.3.4 

网络文件系统   samba ------nfs

临时文件系统   pro----tmp-

 

5.标准I/0   <stdio.h>

ANSIC   库

  带缓冲-----全缓冲---行缓冲,无缓冲。。。stdin和stdout 是行缓冲。。。。

  FILE  结构体-----通过流指针访问       strace 查看电脑下有哪些文件       一个函数对应多个系统调用---实现硬件操作

 

①     什么是流??  流是一个结构体  类似于FILE  *fp ,每个结构体里都有一个文件I/0号  _fileno

②     每运行一个a.out(或者打开一个文件)  系统会默认打开3个流-----stdout,stdin,stdrerr(是个结构体指针)

 

函数介绍:

 

1.fopen()功能:打开一个文件 ,返回一个流指针类型的变量          man  2(系统) 3(库) 查看帮助

FILE  *fopen(const  char *path, const  char *mode)

②    例:终端运行 :./a.out  file.c     则*path为argv[1]

③     –r  只读。  r+ 读写 文件必须存。w 只写{存在,则清空重写。。。。。不存在,则创建,必须具备写的权限} 。                          w+  读写{存在,清空重写。。。不存在,创建} ,a 追加。。。 a+  追加读写 (修改一个文件)

④     W+  和 w 的区别 w 创建后不能再写,而w+可以写

 

2.fclose(FILE  *fp)

 

3. getc(FILE  *stream) 功能:读。。。返回一个字符 (ASCII范围 0--255) char类型(-128—127)

  Int  getc(); 必须返回一个 int类型的

  Int  fgetc();

  Int  getchar(void);键盘上获取 相当于getchar(stdin);

输出:

4. Puts    int  putc(int  c, FILE  *fp)。。。。。。putc(‘1’,stdout) 直接显示器上显示。。

              Fputc ()

              Putchar()

5.perror    print  a  system error messege。。。。

 Strerror (error)。。。。。

 

6.Char  *fgets(char  *buf, int  size,  FILE  *stream)  按行操作  按指定大小size打印,返回 char * 类型   功能:将stream中的内容,取出size大小的内容,放到buf中。

   

7.fputs (char  *s, FILE *stream)  将s中的内容写入 stream流中,不带\0

 

8.stdout 和 stdin行缓冲 (遇到换行符 才刷新内容)   stderr不带缓冲区的  文件的打开默认是全缓冲。。