免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 751 | 回复: 0
打印 上一主题 下一主题

文件操作——linux程序设计之路 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-06 16:44 |只看该作者 |倒序浏览
linux编程文件操作
标准I/O库
这个部分比较常见的函数有
fopen.fclose
fread,fwrite
fflush
fgets,gets
printf,fprintf,sprintf
scanf,fscanf,sscanf
这些个函数都包含在头文件stdio.h里面
用一个程序来解释部分函数的使用
#include stdio.h>
#include stdlib.h>
#include string.h>
int main()
{
    char line[64];
    char property[16],value[16];
    FILE *file;
   
    if((file=fopen("ab","r"))==NULL)
    {
        perror("can,t open");
        exit(1);
    }
    while(fgets(line,128,file)!=NULL)//fgets remove the \n in each line ,butadd a NULL point
    {
        sscanf(line,"read%s %s",property,value);//%s会在出现的第一个空格后停下,会忽略文件里read后面的空格数
        printf("%d,%d\n",strlen(property),strlen(value));
        printf("%s=%s\n",property,value);
        printf("at %ld",ftell(file));//输出当前文件的便宜位置
    }
    fclose(file);
    return 0;
}
ab文件的内容为
one 1
two 2
three 3
首先是fopen函数,FILE *fopen(const char *filename,const char *mode);
r  只读
w  写
a  追加到文件末尾,即append
如果文件打开成功就返回FILE指针,如果失败就返回NULL。
fclose  关闭指定的文件流了
int fclose(File *stream)
当调用这个函数的时候,如果有还没有写出的数据,则该函数会调用fflush(FILE *stream)写出,stdio库会对数据缓冲。
可用的文件流数目是有限制的,这个限制在stdio.h里的FOPEN_MAX定义,因此即时的关闭文件流是很有必要的。
char *fgets(char *s,int n,File *stream),从相应的文件流中读取一行,如果还未读取到文件结尾,则会删除换行符,追加一个空字节,如果已经到了文件结尾或者已经读取了n-1个字节,则会把换行符加上。
sscanf fscanf scanf非常类似,区别只是数据的获取地方不一样,sscanf是在char数组中,fscanf是在文件流中,scanf是在标准输入中,使用方法类似。
int scanf(const char *format, ...);
int fscanf(FILE *stream,const char *format, ...);
int sscanf(const char *s,const char *format, ...);
print,fprint,sprintf也是非常类似,不多加介绍。
ftell(FILE *stream)返回文件当前的读写位置的便宜值。
这个部分其实就是C语言编程,应该已经非常的熟悉了。
最后还有个文件流的错误处理
文件操作的错误表示都会保存在errno.h的errno里,可以通过以下函数操纵。
int ferror(FILE *stream) 测试文件流的错误标识是否被设置。
int feof(FILE *stream) 测试文件流的文件尾标识。
void clearerr(FILE *stream) 清除文件流尾表示和错误表示



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/62515/showart_490723.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP