Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1425105
  • 博文数量: 842
  • 博客积分: 12411
  • 博客等级: 上将
  • 技术积分: 5772
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-14 14:43
文章分类

全部博文(842)

文章存档

2013年(157)

2012年(685)

分类: LINUX

2012-03-06 15:57:56

文件操作函数 

一,底层文件操作函数
1,open() 函数
头文件:unistd.h
函数原型:int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);

函数说明:open() 函数以flags|mode 方式打开以参数pathname指向字符串为路径的文件,成功后返回一个整型的文件描述符,read()和write()函数就可对其进行读写操作了。文件描述符是唯一的,如果两个进程同时打开同一个文件,则会得到不同的文件描述符。
返回值:打开成功则返回唯一的文件描述符;打开失败后返回-1,失败原因记录在全局变量errno中。
参数flag,mode和open()函数的错误代码有很多...
2,close()函数
头文件:unistd.h
函数原型:int close(int fd);
函数说明:关闭文件描述符fd指向的文件。
返回值:成功关闭则返回0,否则返回-1.
错误代码:EBADF,表示参数fd不是有效的文件描述符,或该文件已经关闭。
3,read()函数
头文件:unistd.h
函数原型:size_t read(int fd,void *buf,size_t count);
函数说明:从文件描述符fd指向的文件读取count个字节的数据存入buf指针指向的内存单元。
返回值: 读取成功则返回实际读取的字节数;若返回0,则表示已达到文件尾部或没有可读取的数据。
错误代码:有很多。。。
4,write()函数
头文件:unistd.h
函数原型:size_t write(int fd,const void *buf,size_t count);
函数说明:将buf所在内存中的count个字节的数据写入fd指向的文件。
返回值: 写入成功则返回写入的字节数,否则返回-1,失败原因记录在全局变量errno中。
错误代码:有很多。。。
一个例子:

#include "unistd.h"
#include "sys/types.h"
#include "sys/stat.h"
#include "fcntl.h"
int main()
{
int fd,size;
char buffer[50];
char s[]="This is a linux programe!";

fd=open("test.txt",O_WRONLY);
write(fd,s,sizeof(s));
close(fd);

fd=open("test.txt",O_RDONLY);
size=read(fd,buffer,sizeof(buffer));
close(fd);

printf("%d %sn",size,buffer);
return 0;
}

注:创建的test.txt文件不会开放任何权限,所以要手动添加读写权限才可以。
二,标准文件操作函数
标准文件打开,关闭,读写函数与底层文件操作函数基本类似,就不再过多叙述了。
1,fopen()
头文件:stdio.h
函数原型:FILE * fopen(const char *path,const char *mode);
2,fclose()
头文件:stdio.h
函数原型:int fclose(FILE *stream);
返回值:成功关闭文件则返回0,否则返回 EOF,错误记录在全局变量errno中。
错误代码:EBADF ,表示参赛 stream不指向已打开的文件。
3,fead()
头文件:stdio.h
函数原型:size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);
4,fwrite()
头文件:stdio.h
函数原型:size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);
5,fgetc()
函数原型:int getc(FILE *stream);
6,fputc()
函数原型:int fputc(char c,FILE *stream);
7,fgets()
函数原型:char *fgets(char *s,int size,FILE *stream);
8fputs()
函数原型:int fputs(const char *s,FILE *stream);
9,remove()
头文件:stdio.h
函数原型:int remove(const char *pathname);
函数说明:从文件系统中删除参数pathname指定的文件或目录。若是文件,调用函数 unlink()处理,若是目录,则调用函数rmdir()处理。
返回值:删除成功则符号0,否则返回-1,错误记录在全局变量errno中。
错误代码:。。。
一个例子:

// remove.c
#include "stdio.h"
int main()
{
char path[20];
printf("Enter the file or the path you want to delete:");
scanf("%s",path);

if(!remove(path))
printf("Delete file or path successfully!n");
else
printf("Failled!n");
return 0;
}

10,rename()
头文件:stdio.h
函数原型:int rename(const char *oldpath,const char *newpath);
函数说明:将oldpath指向的文件重命名为newpath,如果需要,还可以改变文件的路径。其他到该文件的连接不受影响。
返回值:操作成功则返回0,否则返回-1,错误记录在全局变量errno中。
错误代码:。。。
一个例子:

// rename.c
#include "stdio.h"
int main()
{
int flag;
char old[]="test.txt";
char new[]="/home/cnfn/c/new.txt";

flag=rename(old,new);
if(!flag)
printf("Succeed!n");
else
printf("Failed!n");
return 0;
}

11,access()
头文件:stdio.h
函数原型:int access(const char *pathname,int mode);
函数说明:检查进程是否有读写权限。参数mode有R_OK,W_OK,X_OK,F_OK几种组合。F_OK检查文件是否存在。
返回值:所有要检查的权限都通过了检查,则返回0,否则返回-1.错误记录在全局变量errno中。
错误代码:。。。

阅读(497) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~