linux 文件编程

news2024/12/28 4:15:27

标准IO和文件IO是计算机编程中用于处理输入/输出(Input/Output,简称IO)操作的两种不同方式,它们各自具有不同的特点和使用场景。

一、定义与特点

标准IO

  • 定义:标准IO通常指的是C语言提供的标准库中的IO操作,主要涉及与标准输入(stdin)、标准输出(stdout)和标准错误(stderr)的交互。
  • 特点
    • 跨平台性:由于是基于C语言标准库,因此可以在不同的操作系统平台上编译和执行。
    • 缓冲机制:标准IO在文件IO的基础上封装了缓冲机制,先读写缓冲区,必要时再访问实际文件,从而减少系统调用次数,提高执行效率。
    • 使用文件流指针:通过文件指针(FILE*)来操作文件,文件指针指向一个FILE结构体,该结构体包含了文件的属性和缓冲区等信息。

文件IO

  • 定义:文件IO一般指的是Linux系统调用层面的IO操作,是操作系统提供的接口函数,用于对文件的读取和写入。
  • 特点
    • 系统调用:直接通过系统调用来实现文件的读写操作,没有缓冲机制。
    • 使用文件描述符:文件描述符是一个非负整数,用于标识打开或创建的文件,通过文件描述符来间接找到文件并对其进行操作。
    • 可操作多种类型文件:不仅可以操作普通文件,还可以操作设备文件、管道文件、套接字文件等。

二、主要函数与操作

标准IO的主要函数

  • fopen():打开文件,并返回一个文件指针。
  • fclose():关闭文件。
  • fread():从文件中读取数据。
  • fwrite():向文件中写入数据。
  • fseek():移动文件指针到指定位置。

文件IO的主要系统调用

  • open():打开文件,并返回一个文件描述符。
  • close():关闭文件。
  • read():从文件中读取数据。
  • write():向文件中写入数据。
  • lseek():移动文件描述符的读写位置。

三、区别与联系

区别

  1. 跨平台性:标准IO可以在不同的操作系统平台上编译和执行,而文件IO通常局限于类UNIX环境。
  2. 缓冲机制:标准IO带有缓冲机制,而文件IO没有缓冲机制,每次操作都会执行系统调用。
  3. 接口:标准IO使用文件流指针(FILE*)作为接口,而文件IO使用文件描述符(非负整数)作为接口。
  4. 效率:由于标准IO带有缓冲机制,因此其执行效率通常高于文件IO。
  5. 可操作文件类型:文件IO可以操作多种类型的文件,而标准IO通常只用于操作普通文件。

联系

  • 标准IO是基于文件IO的封装,它在文件IO的基础上增加了缓冲机制等高级功能。
  • 在Linux系统中,标准IO的实现通常依赖于系统调用(如read()write()等),但通过封装提供了更高级、更易于使用的接口。

  1. 标准IO

   也称为标准输入输出(Standard Input/Output),是计算机编程中一种常见的IO操作方式,特别是在C语言及其衍生语言中广泛使用。它主要通过标准C库中的函数来实现,提供了丰富的接口用于数据的输入和输出。

文本文件是一种计算机文件,它包含的是人类可读的文本数据,而不是二进制代码或机器语言。

2,文件的概念,作用

    linux中一切都是文件。文件用来存储数据(数据,指令);

3,linux中文件的类型,

    7种,d为目录 ,-为普通文件,l为软链接(符号链接,类似于快捷方式),p管道文件,s套接字文件, ,c为字符设备,b块设备

流:   FILE*
struct FILE
{
}
    数据从文件当中流入和流出所体现出来的字节
    流叫做流

    流的分类:
        二进制流: 2001 \n
            二进制数据的流
        文本流:
            ASCII码数据的流 \n \t 
FILE 结构定义的对象 FILE * 称之为流对象,也叫文件流指针。
流对象 ===》头 《===数据====》尾

stdin  FILE*   scanf ();
stdout         printf();
stderr

4、ll命令为显示当前目录下文件的详细信息

开头第一个字符即为文件的类型

后面可分为三部分rw-   rw-   r--

第一部分为用户权限,即后面的第一个linux,第二个为小组权限,即第二个linux

r为读,w为写,x可执行

可改为二进制,八进制

eg:-w-   --x   r--

       010  001  100

        2       1       4

1为硬链接,多个文件名关联一个文件内容

组名linux后面为文件的大小

再后面为最后一次修改时间

#include <stdio.h>
//  ./a.out 4 5 56 7 8 
int main(int argc, char *argv[])
{

    if(argc<3)
    {
        printf("usage:./a.out srcfile dstfile\n");
        return 1;
    }
    FILE *src = fopen(argv[1],"r");
    FILE * dst= fopen(argv[2],"w");
    if(NULL == src || NULL == dst )
    {
        printf("fopen error\n");
        return 1;
    }
    while(1)
    {
        int c = fgetc(src);
        if(EOF== c)
        {
            break;
        }
        fputc(c,dst);
    }

    fclose(dst);
    fclose(src);
    return 0;
}

fwrite函数返回成功写入文件的数据项个数。这个值可以与count参数进行比较,以检查是否所有数据都被成功写入。返回值小于形参size_t count,表示错误。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2039598.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第八季完美童模全球总冠军·韩嘉潞 破浪扬帆写就传奇

梦想的舞台上&#xff0c;星光璀璨&#xff0c;每一步都闪耀着坚持与努力的光芒。在这个盛夏&#xff0c;我们共同见证了一个关于勇气、才华与梦想的辉煌篇章——星光女孩韩嘉潞&#xff0c;在第八季完美童模的璀璨舞台上&#xff0c;以非凡的魅力与不懈的努力&#xff0c;勇夺…

奥运冠军郑钦文:荣耀与激励!

&#x1f396;️巴黎奥运的荣耀时刻&#xff0c;属于郑钦文&#xff01; 在巴黎奥运会的赛场上&#xff0c;郑钦文以无比的坚韧和卓越的技艺&#xff0c;一路过关斩将&#xff0c;最终登上了冠军的宝座&#xff01; 我们借助以下图片中的方法&#xff0c;将她在赛后视频发言中…

音频转换软件哪个好?试试这5款

潍坊新青年音乐节燃爆现场&#xff0c;音符跳跃间&#xff0c;想不想把最爱的现场Live一键转成手机铃声&#xff1f;别急&#xff0c;寻找免费电脑音频转换软件的你来对地方了&#xff01; 告别繁琐&#xff0c;5款专业级利器大放送&#xff0c;今天我来告诉你们&#xff1a;电…

阿里云-java调用短信服务,第三方接口的开启(傻瓜式教程)

第一步&#xff1a;在浏览器中&#xff0c;搜索阿里云 第二步&#xff1a;打开aly的主页 第三步&#xff1a;在最上方的导航栏中&#xff0c;找到云市场&#xff0c;注意不要点击&#xff0c;会自动有触发悬浮框出现&#xff0c;在悬浮框中找到 短信 第四步&#xff1a;点击 短…

Secure Coding in C and C ++ (三)关于语法与指针的感悟

上一篇文章中&#xff0c;我们讲了一些关于编译和链接以及基础的C知识。详情请见文章 SecureCoding in C and C&#xff08;二&#xff09; 本篇文章将从循环开始写起 1 循环 1. 1 for 先来个简单的例子&#xff1a; 打印hello world 五次&#xff1a; 很简单的吧 for循环的…

echarts学习:绘制地图

前言 经过之前一段时间的磨砺&#xff0c;我具备了基本的使用echarts绘制图表的能力。但是在最近这几个月里我接连遇到了几个棘手的任务&#xff0c;这大大的提升了我的echarts水平。其中我遇到的第一个高难度任务就是使用echarts绘制如下的地图&#xff1a; 简单的分析一下&a…

批量查询全国快递单号:高效追踪物流信息

在日常生活和工作中&#xff0c;我们经常会遇到需要查询多个快递单号物流信息的情况。如果手动逐一查询&#xff0c;不仅效率低下&#xff0c;而且容易出错。为了解决这个问题&#xff0c;我们可以借助固乔科技推出的【固乔快递查询助手】软件&#xff0c;轻松实现全国快递的批…

yolov5详解(一):网络结构

1. 完整的网络结构 以下是参考b站上作者以及yolov5官方代码画出的yolov5l v6.0版本的模型结构&#xff0c;v6.0版本的模型结构是目前yolov5版本的稳定版本&#xff0c;想必以后也不会有什么改变。l,m,n,s,x只是有些层以及输出通道数变化&#xff0c;整体架构是完全一样的&…

vue 项目中 使用vxe-grid 表格中给表格的表头设置特殊的格式 , 并且给指定的列文字设置颜色

项目场景&#xff1a; 相关背景&#xff1a; vue 项目中 使用vxe-grid 表格中给表格的表头设置特殊的格式&#xff0c;并为指定的列文字设置颜色 实现方案&#xff1a; 具体实现方法及步骤&#xff1a; 一、给表格的表头设置特殊的格式 实现方式一&#xff1a; :header-row-s…

WebDeveloper靶机复现

靶机设置 设置靶机为NAT模式 靶机IP发现 nmap 192.168.112.0/24 靶机ip为192.168.112.137 目录扫描 开放80端口&#xff0c;进行目录扫描 dirb 192.168.112.137 访问浏览器 目录拼接 拼接/ipdata 发现了一个流量包 在wireshark里面查看&#xff0c;发现wordpress的账户…

python提取b站视频的音频(提供源码

如果我想开一家咖啡厅&#xff0c;那么咖啡厅的音乐可得精挑细选&#xff01;又假设我非常喜欢o叔&#xff0c;而o叔只在b站弹钢琴&#xff0c;那这时候我就得想方设法把b站的视频转为音频咯&#xff01; 一、首先打开网页版bilibili&#xff0c;按F12&#xff1a; 二、刷新页面…

Java 空值与null 形参与实参学习

Java系列文章目录 文章目录 Java系列文章目录一、前言二、学习内容&#xff1a;三、问题描述四、解决方案&#xff1a;4.1 空值与null的区别4.1.1 空值&#xff08;Empty Value&#xff09;4.1.2 Null 4.2 形参与实参区别 五、总结&#xff1a;5.1 学习总结&#xff1a; 一、前…

智慧高速路三维可视化解决方案

项目背景 随着科技的快速发展&#xff0c;智慧高速公路的建设已成为交通领域的重要趋势。国家和相关部委陆续发布多项政策指导智慧公路建设&#xff0c;逐步制定相关建设标准规范&#xff0c;协助推动公路数字化、智能化升级。 方案简介 数字孪生高速公路解决方案是一种集成…

练习实践-基础设施-文件共享-FTP服务搭建-匿名/本地用户/虚拟用户三种模式

参考来源&#xff1a; 在线书籍-linux就该这么学-第11章 安装vsftpdf服务 [rootcentos7 home]# dnf install vsftpd Extra Packages for Enterprise Linux 7 - x86_64 0. CentOS-7 - Base - mirrors.aliyun.com …

C语言中的整数和浮点数在内存中存储

在C语言中&#xff0c;整形和浮点型数据的存储方式有所不同。 对于整形数据&#xff0c;C语言使用补码表示法存储。补码表示法可以方便地进行二进制加减法运算&#xff0c;同时能够简化硬件设计。对于正整数&#xff0c;其补码与原码相同&#xff0c;即直接存储其二进制表示。对…

Spring 循环依赖解决方案

文章目录 1. 循环依赖的产生2. 循环依赖的解决模型3. 基于setter/Autowired 的循环依赖1_编写测试代码2_初始化 Cat3_初始化 Person4_ 回到 Cat 的创建流程5_小结 4. 基于构造方法的循环依赖5. 基于原型 Bean 的循环依赖6. 引人AOP的额外设计7. 总结 IOC 容器初始化bean对象的逻…

如何对open62541.h/open62541.c的UA_Client进行状态(在线/掉线)监控

文章目录 1.背景2.解决方案3.异步连接4.注意事项4.1.线程问题4.2.UA_Client_run_iterate 1.背景 目前在利用open62541.h/open62541.c编写了一个与PLC进行OPCUA通讯的上位机程序。 上位机这边会定时对PLC的某个opcua变量进行写操作。但是假如PLC离线或者说拔掉网线&#xff0c;…

【多线程-从零开始-柒】单例模式,饿汉和懒汉模式

单例模式&#xff1a;是一种设计模式 设计模式&#xff0c;类似于“棋谱”&#xff0c;就是固定套路&#xff0c;针对一些特定的场景&#xff0c;给出一些比较好的解决方法只要按照设计模式来写代码&#xff0c;就可以保证代码不会太差&#xff0c;保证代码的下限 设计模式 设…

8月8日学习笔记 python基础

1.环境 python2&#xff0c; python3 yum list installed|grep python yum -y install python3 # 最新安装3.12可以使⽤源码安装&#xff0c;教程是在第⼀个星期pdf python3 --version 3.6.8 #进⼊到python的编辑状态 python3 # 如果直接输⼊python&#xff0c;也会进⼊到pyth…