jixuduxing

linux学习笔记(5)

打开流的几种方式:
fopen 打开一个指定的文件
freopen  在一个指定流上打开指定文件 如果该流已经打开,关闭之,若已定向,则清除之
fdopen 获取一个现有的文件描述符;并使一个标准的io流与该描述符相结合;


当以读和写类型打开一个文件时
1、如果中间没有fflush、fseek、fsetpos或rewind,则在输出的后面不能直接跟随输入;
2、如果中间没有fseek、fsetpos或rewind,或者一个输入操作没有到达文件尾端,则在输入操作之后不能直接跟随输出;


按照系统默认,除非流引用终端设备,流被打开时是全缓冲的,若流引用终端设备,行缓冲,若是标准输入、输出、出错,无缓冲;


读、写:
1、每次一个字符:
getc 可被实现为宏,
fgetc 不能被实现为宏,
getchar =getc(stdin)

对于这三个函数,不管出错还是到达尾端,三个函数都会返回-1,这时候需要调用ferror或者feof来判断;

ungetc 把读出的字符压到流中,但是压送的顺序和读出顺序相反;

以上为输出函数:
下面输入函数:
putc
fputc
putchar==putc(c,stdout)

2、每次一行io:
fgets
gets
gets没有读缓冲限制,而且不将换行符存入缓冲区中;

fputs
puts
puts会将换行符写到标准输出中;


使用标准io的一个优点是无需考虑缓冲以及最佳io长度的选择,在使用fgets时只需要考虑最大行长,但是与选择最佳io长度比较,这要方便的多;

fgets是使用memccpy实现的,memccpy函数使用的汇编语言而非c语言来实现,所以要高效的多;
文件时间属性
st_atime 文件数据的最后访问时间
st_mtime 文件数据的最后修改时间
st_ctime i节点状态的最后更改时间

更改文件的权限、用户id、链接数等,都会影响到i节点,i节点的所有信息都是与文件的实际内容分开存放的


utime(const char *pathname,const struct utimbuf *times);
struct utimbuf{
time_t actime;
time_t modtime;
};设置文件的访问时间和内容修改时间;

posted on 2010-05-05 09:39 高磊 阅读(214) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

<2010年5月>
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

常用链接

留言簿

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜