文件相关命令(Linux)

本文详细介绍了C语言中的文件操作命令,包括fopen用于文件打开,fread用于数据读取,fseek用于文件定位。通过实例代码展示了如何使用这些函数进行文件读写,并分析了可能出现的错误处理。最后列举了更多文件及I/O操作命令,如fcntl, open, creat等。
摘要由CSDN通过智能技术生成

文件操作相关命令

文件读写操作命令

命令作用
fcntl文件控制
open打开文件
creat创建新文件
close关闭文件描述字
read读文件
write写文件
readv从文件读入数据到缓冲数组中
writev将缓冲数组里的数据写入文件
pread对文件随机读
pwrite对文件随机写
lseek移动文件指针
dup复制已打开的文件描述字
dup2按指定条件复制文件描述字
flock文件加/解锁
poll I/O 多路转换
truncate / ftruncate截断文件
umask设置文件权限掩码
fsync把文件在内存中的部分写回磁盘

文件系统操作命令:

命令作用
access确定文件的可存取性
chdir / fchdir 改变当前工作目录
chmod / fchmod改变文件方式
chown / fchown / lchown改变文件的属主或用户组
chroot改变根目录
stat / lstat / fstat取文件状态信息
statfs / fstatfs取文件系统信息
readdir读取目录项
getdents读取目录项
mkdir创建目录
mknod 创建 索引节点
rmdir删除目录
rename文件改名
link创建链接
symlink创建符号链接
unlink 删除链接
readlink读符号链接的值
mount安装文件系统
umount卸下文件系统
ustat取文件系统信息
utime改变文件的访问修改时间

相关函数

  1. fopen
FILE* fopen(const char *path, const char* mode);
//path: 带路径的文件名.
//mode: 输出方式:"r,"r+","w","w+","a","a+","b"
mode作用
r只读,若文件不存在则报错返回。
r+可读可写,若文件不存在则报错返回。
w只写,若文件不存在,创建一个新文件,写入文件;若文件存在,清空该文件原有内容,再写入。
w+可读可写,若文件不存在,创建一个新文件,写入文件;若文件存在,清空该文件原有内容,再写入。
a追加只写,总是将数据(文件:追加到文件输入的位置但默认在文件末尾)追加在文件末尾,文件不存在则创建。
a+追加可读可写,总是将数据(文件:追加到文件输入的位置但默认在文件末尾)追加在文件末尾,文件不存在则创建。
b读文件数据并按原始的二进制操作。
  1. fread
size_t fread(const void* ptr, size_t size, size_t nmemb ,  FILE*  stream );
//ptr:    传入存放读取到的数据的缓冲区首地址。
//size:   块大小。
//nmemb:  块个数(块个数x块大小=要写入数据的总长度)。
//stream: fopen返回的操作句柄。
//返回值: 成功返回完整读取到的块个数,出错返回0。文件读取到末尾,也返回0。

//为了判断是否出错,还是读取到文件末尾必须要使用的接口:
int  feof( FILE*  stream);   //判断是否读取到文件末尾。         
int  ferror( FILE*  stream); //判断是否出错。

建议: fread读取数据的时候,块大小设置为1,块个数设置为长度。

  1. fseek
int fseek( FILE*  stream, long  offset,  int whence);
//stream:  文件操作句柄;
//offset:  偏移量;
//whence:  偏移的相对起始位置;
//返回值:  成功返回0,错误返回1;
  1. demo
#include<stdio.h>
#include<string.h>
int main(int argc,char*argv[])
{
    FILE *fp = fopen("test.txt", "w+");
    if(fp == NULL){
        perror("fopen error");
        return -1;
    }

    char *ptr = "insist your dream ~\n";
    int  ret = fwrite(ptr, strlen(ptr), 1, fp);
    if(ret == 0){
        perror("fwrite error");
        return -1;
    }
     
    fseek(fp, 0, SEEK_SET); 
    char buf[1024] = {0};
    ret=fread(buf, 1, 100, fp);
    if(ret == 0){
        if(feof(fp)){
            printf("end of file\n");
        }
        if(ferror(fp)){
            perror("error of read");
        }
    }
    printf("%d-%s\n", ret, buf);
    fclose(fp);
    return 0;
}

好了,欢迎大家前来评论,共同进步。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值