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;
}
复制代码

 

posted @   cococo点点  阅读(391)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
点击右上角即可分享
微信分享提示
^
关注