Linux 文件操作函数

简介:

底层文件操作函数: 

#include<unistd.h>
int open(const char* pathname,int flags);
int open(const char* pathname,int flags,mode_t mode);
//返回值:成功,返回文件描述符 失败,返回-1,失败原因记录在errno中
int close(int fd);
//返回值:成功返回0 失败返回-1
size_t read(int fd,void *buffer,sizeof(buffer));
size_t write(int fd,void *buffer,sizeof(buffer));
int ioctl(int fd,int request);

例子:

复制代码
//write.c
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

int main()
{
    int fd,size;
    char s[]="this is a linux program!\n",buffer[50];

    fd=open("temp.txt",O_WRONLY|O_CREAT|O_EXCL);
    write(fd,s,sizeof(s));
    close(fd);

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

    printf("%s\n",buffer);
    return 0;
}
复制代码

 

标准文件操作函数:

#include<stdio.h>
FILE *fopen(const char* path,const char* mode);
//失败返回NULL
int fclose(FILE *stream);
//成功返回0,失败返回EOF
#include<stdio.h>

size_t fread(void *ptr,size_t size,size_t nmemb,FILE *stream);

size_t fwrite(const void *ptr,size_t size,size_t nmemb,FILE *stream);

例子:

复制代码
#include <stdio.h>

int main(int argc, char **argv)
{
    FILE *ptr;
    int i,numread,numwritten,length;
    length=20;
    char data[length];
    
    if((ptr=fopen("temp.txt","w+"))!=NULL){
        for(i=0;i<length;++i)
            data[i]='a'+i;
        numwritten = fwrite(data,sizeof(char),length,ptr);
        printf("wrote %d words!\n",numwritten);
        fclose(ptr);
    }
    else
        printf("open files failed!\n");
        
    if((ptr=fopen("temp.txt","r+"))!=NULL){
        numread=fread(data,sizeof(char),length,ptr);
        printf("%s\n",data);
        printf("read %d words!\n",numread);
        fclose(ptr);
    }
    else
        printf("open files failed!\n");
    
    
    return 0;
}
复制代码

读写文件文字符函数:

复制代码
#include<stdio.h>

int getc(FILE *stream);

int fputc(int c,FILE *stream);

char* fgets(char *s,int size,FILE *stream);

char* fputs(const char *s,FILE *stream);
复制代码

例子:

复制代码
//fputc.c
#include <stdio.h>

int main(int argc, char **argv)
{
    int fd,size;
    char c;
    FILE* stream=fopen("temp.txt","a+");
    c=fgetc(stream);
    printf("%c\n",c);
    c=fputc(c,stream);
    printf("%c\n",c);
    return 0;
}
复制代码

文件移动和重命名:

复制代码
#include<stdio.h>

int remove(const char* pathname);

int rename(const char* oldpath,const char* newpath);

//检查读写是否有误
int access(const char* pathname,int mode);
复制代码

例子:

复制代码
//remove.c
#include <stdio.h>

int main(int argc, char **argv)
{
    int flag;
    char s[]="temp.txt";
    flag=remove(s);
    if(flag==0)
        printf("delte the file!\n");
    else
        printf("failed!\n")
    return 0;
}
复制代码
复制代码
//rename.c
#include <stdio.h>

int main(int argc, char **argv)
{
    int flag;
    char old[]="temp.txt";
    char new[]="/root/yy/new.txt";
    
    flag=rename(old,new);
    if(flag==0)
        printf("rename succeed!\n");
    else
        printf("failed!\n")
    return 0;
}
复制代码

 本文转自cococo点点博客园博客,原文链接:http://www.cnblogs.com/coder2012/archive/2013/03/30/2990062.html,如需转载请自行联系原作者

相关文章
|
1月前
|
Linux
关于Linux目录访问函数总结
关于Linux目录访问函数总结
13 1
|
2月前
|
Linux
【Linux 系统编程】wait函数详解
【Linux 系统编程】wait函数详解
26 0
|
2月前
|
算法 Linux C++
【Linux系统编程】深入解析Linux中read函数的错误场景
【Linux系统编程】深入解析Linux中read函数的错误场景
208 0
|
2月前
|
存储 算法 Linux
【Linux系统编程】深入理解Linux目录扫描函数:scandir目录函数(按条件扫描目录
【Linux系统编程】深入理解Linux目录扫描函数:scandir目录函数(按条件扫描目录
72 0
|
1月前
|
Java Linux Shell
【Linux】13. 文件操作
【Linux】13. 文件操作
42 1
|
2月前
|
算法 Linux C语言
【Linux系统编程】深入理解Linux目录操作:文件夹位置指针操作函数(telldir,seekdir,rewinddir)
【Linux系统编程】深入理解Linux目录操作:文件夹位置指针操作函数(telldir,seekdir,rewinddir)
25 0
|
2月前
|
算法 Linux C++
【Linux系统编程】深入理解Linux中的chmod函数和mode_t类型
【Linux系统编程】深入理解Linux中的chmod函数和mode_t类型
41 0
|
1天前
|
Linux C语言
【Linux】 拿下 系统 基础文件操作!!!
怎么样,我们的猜测没有问题!!!所以语言层的文件操作函数,本质底层是对系统调用的封装!通过不同标志位的封装来体现w r a+等不同打开类型! 我们在使用文件操作时,一般都要使用语言层的系统调用,来保证代码的可移植性。因为不同系统的系统调用可以会不一样!
11 2
|
3天前
|
存储 算法 网络协议
【探索Linux】P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )
【探索Linux】P.26(网络编程套接字基本概念—— socket编程接口 | socket编程接口相关函数详细介绍 )
10 0
|
3天前
|
消息中间件 Unix Linux
【探索Linux】P.14(进程间通信 | 匿名管道 | |进程池 | pipe() 函数 | mkfifo() 函数)
【探索Linux】P.14(进程间通信 | 匿名管道 | |进程池 | pipe() 函数 | mkfifo() 函数)
10 0