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不带缓冲区的 文件的打开默认是全缓冲。。