标准I/O
ANSI C 文件管理,包含文件指针FILE的概念;文件和流之间的关系;文本与二进制文件;文件的基本操作。它是Linux C最基本的文件编程。
ANSI C标准文件库封装了文件的系统调用,为了提升效率还加入了文件缓冲机制,提供了纪录的方式读写文件。
-
FILE 结构在stdio.h头文件的定义,其中包含打开文件的句柄,缓冲等信息,这些信息供文件操作函数使用,用户一般不必关心。
-
存储方式
ANSI C 规定了两种文件存储方式,文本和二进制方式。
Linux对文件存储方式不做区分。Linux系统,文件存放均以二进制方式存储。
文本文件也称ASCII文件,每个字节存储一个ASCII码字符,文本文件存储数量大,便于对字符进行操作,但是操纵速度慢。二进制文件将数据按照内存中的存储形式进行存放,二进制文件的存储量小,但是存取速度快,适合存放中间结果。 -
标准输入,标准输出,标准错误
Linux系统为每一个进程提供了标准输入(stdin,默认从键盘读取数据),标准输出(stdout,默认向屏幕输出数据),标准错误(stderr,默认向屏幕输出数据)三个文件流。3个I/O数据流定义在stdio.h,C标准库函数printf()就是默认使用stdout输出数据。用户可以通过重新设置标准I/O,把程序的输出结果重定向到其他设备。 -
缓冲
-
ANSI 文件库 打开文件和关闭文件函数:fopen() 和 fclose()
FILE *fopen(const char *path, const char *mode); int fclose(FILE *stream);
path参数指定文件路径,mode指定打开方式。
fopen()和fclose()配对使用,因为文件流可能带有缓冲,只有成功关闭文件以后,才能保证缓冲被正确写到文件中,不然可能造成文件数据丢失。
- 文件读写
ANSI C提供了3中不同的文件读写函数。
(1) 按字节读写:
int fgetc(FILE *stream); int getc(FILE *stream); int getchar();
fgetc()和getc()作用一致,从文件流读取一个字符,如果读取错误或者读取到文件结尾,返回预定义常量EOF. getc()通常被定义为一个宏,执行效率会更高。getchar()是从标准输入stdin读取一个字符,相当于fgetc(stdin).
int fputc(int c, FILE *stream); int putc(int c, FILE *stream); int putchar();
他们也有返回值,返回值与其对应的读函数相同。
(2) 按行读取
char *fgets(char *s, int size, FILE *stream); char *gets(char *s)
两个函数均指定了缓冲s。
fgets()从文件流读取指定size的一行字符进入缓冲s. 一行数据以换行符作为标记,如果一行字符数小于fgets()指定size,则完整读入整行;否则最多读取size-1个字符;读取一行字符之后,再在最后写入一个字符串结束符0(null).
gets()从stdin读取一行字符,但会丢掉换行符。gets()没有指定缓冲大小,容易造成缓冲溢出,操作比较危险。
int fputs(const char *s, FILE *stream); int puts(const char *s);
fputs()将以字符串结束符null结尾的一行字符串写入文件流,null不写入,终止符前是否有换行符都会被写入。puts()将以null结尾的一行字符串写入stdout,但是puts()会在写入一行字符串后再写入一个换行符。
(3) 按块读取
int fwrite(const void *ptr, size_t size, sizt_t nmemb, FILE *stream); int fread(void *ptr, size_t size, sizt_t nmemb, FILE *stream);
其中ptr为内存中存放数据块的地址, 函数返回成功读取数据块的个数。
(4) 文件流定位
int fseek(FILE *stream, long offset, int whence); long ftell(FILE *stream); void rewind(FILE *stream);
fseek()中whence有三个取值,SEEK_CUR, SEEK_SET,SEEK_END.
- 不支持ANSI C 文件编程
cd /sys/kernel/debug/hifi4dsp
echo “read 0x1fed4010 0x1000” > reg
cat reg > ./data.txt
adb pull到本地
- 点赞
- 收藏
- 分享
- 文章举报
- Filesystem Hierachy Standard 文件系统层级标准详解
- 合肥公交、出租车用天然气钢瓶检测费标准出台
- 标准控件:网上的实例/代码
- 07-Windows Server 2012 R2 会话远程桌面-标准部署-RD授权 推荐
- html5中新的标准属性
- PTN设备标准规范
- 集成显卡宽屏无法达到标准分辨率的解决方法
- Java 标准类库列表
- 将历史记录时间戳替换为标准时间
- 构造方法、成员方法的分类及使用及基本类的标准写法
- RS-232、RS-422与RS-485标准及应用
- 对象实体 参考标准
- C#中标准Dispose模式的实现
- Unicode字符编码标准
- IE浏览器文档标准模式与文档兼容模式的区别
- 核心思想:决定你是富人还是穷人的11条标准(有强烈的赚钱意识,这也是他血液里的东西,太精彩了)good
- 数据库设计说明书.doc(转载自国家计算机标准和文件模板)
- 图形领域GPU标准之战逐鹿并行计算
- 08-Windows Server 2012 R2 会话远程桌面-标准部署-使用PowerShell进行部署2-1 推荐
- java 集合(6) 选择集合类标准 / Map 接口用法