linux的io的知识大全

news2024/11/30 2:40:27

C语言的io操作

写文件

#include<stdio.h>
#include<string.h>

#define FILE_NAME "log.txt"
int main()
{
    FILE * fp = fopen(FILE_NAME, "w");
    
    if(fp==NULL)
    {
        printf("fopen error!\n");
    }
    
    const char* msg = "hello zk\n";
    int cnt =5;
    while(cnt--)
    {
        fwrite(msg,strlen(msg),1,fp);
    }
    
    fclose(fp);
    return 0;
}

接口介绍

fopen函数,第一个参数是文件的路径,第二个参数是mode 有 r w r+ w+等等.返回值返回的是一个文件指针。
r:只读,不存在文件则会报错。
w:写文件,不存在文件则会创建一个文件
r+:读写文件,不存在文件则会报错
w+::读写文件,不存在文件则会创建一个文件

FILE *fopen(const char *path, const char *mode);

fclose,参数是是一个文件指针

int fclose(FILE *fp);

fwrite
参数的意义,第一个是写的消息,第二个是消息的大小,第三个是每一个字符的大小,最后一个是文件指针。

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

结果
在这里插入图片描述
在这里插入图片描述
读文件

#include<stdio.h>
#include<string.h>

#define FILE_NAME "log.txt"
int main()
{
    FILE * fp = fopen(FILE_NAME, "r");
    
    if(fp==NULL)
    {
        printf("fopen error!\n");
    }
    
    char buffer[1024];
    //while(cnt--)
    //{
        //fwrite(msg,strlen(msg),1,fp);
    //}
    
    while(fgets(buffer, sizeof(buffer), fp) != NULL)  // 使用sizeof并检查返回值
    {
        printf("%s", buffer);  // fgets自动添加'\0'和保留换行符,不需额外处理
    }
    fclose(fp);
    return 0;
}

结果

[zk@VM-24-17-centos lesson16]$ ./test
hello zk
hello zk
hello zk
hello zk
hello zk

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

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


追加文件

#include<stdio.h>
#include<string.h>

#define FILE_NAME "log.txt"
int main()
{
    FILE * fp = fopen(FILE_NAME, "a");
    
    if(fp==NULL)
    {
        printf("fopen error!\n");
    }
    
    //char buffer[1024];
    const char* msg = "hello zk\n";
    int cnt=5;
    while(cnt--)
    {
        fwrite(msg,strlen(msg),1,fp);
    }
    
    //while(fgets(buffer, sizeof(buffer), fp) != NULL)  // 使用sizeof并检查返回值
    //{
        //printf("%s", buffer);  // fgets自动添加'\0'和保留换行符,不需额外处理
    //}
    fclose(fp);
    return 0;
}

结果
在这里插入图片描述

接下来就是操作系统的接口了

open

       int open(const char *pathname, int flags);
       int open(const char *pathname, int flags, mode_t mode);

c语言,java语言,python语言。都有io操作,那操作系统只有一个,怎么版本。那就学习操作系统的接口。知其所以然
我们先介绍flag是什么。在C语言中没有bool类型,这时候用bit位来当作标志的判断。

O_CREAT 创建
O_APPEND 追加
O_TRUNC 清空
O_RDONLY 只读

我们先介绍这个东西的原理
看代码

#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


#define ONE (1<<0) // 0000 0001
#define TWO (1<<1)  // 0000 0010
#define THREE (1<<2)  // 0000 0100
#define FOUR (1<<3)  // 0000 1000


void print1(char n)
{
    if(n&ONE)
    {
        printf("one");
    }
    if(n&TWO)
    {
        printf("two");
    }
    if(n&THREE)
    {
        printf("three");
    }
    if(n&FOUR)
    {
        printf("four");
    }
    printf("\n");
}
int main()
{
    print1(ONE);
    print1(ONE|TWO);
    return 0;
}
[zk@VM-24-17-centos lesson16]$ ./test
one
onetwo

前面的4个宏就相当于这里的define,

现在来看看使用

int open(const char *pathname, int flags);

看代码

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

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

相关文章

【复现】浙大恩特客户资源管理系统 SQL注入漏洞_71

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 浙大恩特客户资源管理系统是一款针对企业客户资源管理的软件产品。该系统旨在帮助企业高效地管理和利用客户资源&#xff0c;提升…

Golang 基于共享变量的并发锁

一、互斥锁 先看一个并发情况&#xff0c;同时操作一个全局变量&#xff0c;如果没有锁会怎么样 假设有1000个goroutines并发进行银行余额的扣除&#xff0c;每次都扣除10元&#xff0c;起始的总余额是10000&#xff0c;理论上并发执行完应该是0对不对&#xff0c;但实际却不…

GeoServer:忘记密码重置

操作步骤 1. 找到data_dir/security/usergroup/default目录下的users.xml文件&#xff0c; 2.修改password为plain:geoserver&#xff0c; 这里无论原来的密码是什么&#xff0c;改为plain:geoserver之后&#xff0c;就可以通过admin&#xff1a;geoserver默认账户密码登录了。…

RAG应用开发实战(01)-RAG应用框架和解析器

1 开源解析和拆分文档 第三方的工具去对文件解析拆分&#xff0c;去将我们的文件内容给提取出来&#xff0c;并将我们的文档内容去拆分成一个小的chunk。常见的PDF word mark down, JSON、HTML。都可以有很好的一些模块去把这些文件去进行一个东西去提取。 优势 支持丰富的文…

电商新宠:淘宝拍立淘API接口助力精准搜索商品信息

淘宝拍立淘API接口&#xff0c;作为电商领域的新宠&#xff0c;正以其独特的图像识别技术为精准搜索商品信息提供强大的助力。这项基于深度学习和计算机视觉技术的先进服务&#xff0c;使得用户能够通过上传图片来快速搜索淘宝平台上的相关商品&#xff0c;极大地提升了购物体验…

鸿蒙让我赚到了第一笔桶金!年薪33.6W!

抢人&#xff01;抢人&#xff01;抢人&#xff01; 所谓抢滩鸿蒙&#xff0c;人才先行。鸿蒙系统火力全开后&#xff0c;抢人已成鸿蒙市场的主题词&#xff01; 智联招聘数据显示&#xff0c;春节后首周&#xff0c;鸿蒙相关职位数同比增长163%&#xff0c;是去年同期的2.6倍…

分布式锁-redission可重入锁原理

5.3 分布式锁-redission可重入锁原理 在Lock锁中&#xff0c;他是借助于底层的一个voaltile的一个state变量来记录重入的状态的&#xff0c;比如当前没有人持有这把锁&#xff0c;那么state0&#xff0c;假如有人持有这把锁&#xff0c;那么state1&#xff0c;如果持有这把锁的…

RX8901CE可在最高+105℃工作温度下工作,助力光伏逆变器稳定运行

光伏逆变器是一种由半导体器件组成的电力调整装置&#xff0c;主要用于把直流电力转换成交流电力。一般由升压回路和逆变桥式回路构成&#xff0c;而且很多时候会配有储能单元进行峰谷电压平整。作为光伏电站中关键的部件&#xff0c;光伏逆变器的可靠运行影响着整个光伏电站的…

ubuntu如何截图? ubuntu中截屏的三种方法

文章目录 1.ubuntu主要用途2.ubuntu如何截图&#xff1f;2.1 方法一&#xff1a;键盘按键快捷键截屏 2.2 方法二&#xff1a;系统自带软件2.3 方法三&#xff1a;第三方软件 Reference 1.ubuntu主要用途 1、桌面操作系统&#xff1a;Ubuntu可用作个人电脑或笔记本电脑的操作系…

树形查找试题(二叉树、红黑树)

一、单项选择题 01.对于二叉排序树&#xff0c;下面的说法中&#xff0c;()是正确的。 A.二叉排序树是动态树表&#xff0c;查找失败时插入新结点&#xff0c;会引起树的重新分裂和组合 B.对二叉排序树进行层序遍历可得到有序序列 C.用逐点插入法构造二叉排序树&#xff0c;若先…

批归一化(BN)在神经网络中的作用与原理

文章目录 1. 批归一化&#xff08;BN&#xff09;在神经网络中的作用与原理1.1 作用与优势1.2 原理与推导 2. 将BN应用于神经网络的方法2.1 训练时的BN 2. 将BN应用于神经网络的方法2.1 训练时的BN2.2 测试时的BN代码示例&#xff08;Python&#xff09;&#xff1a; 3. BN的优…

QT学习day5

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget),socket(new QTcpSocket(this)) {ui->setupUi(this);//初始化界面ui->msgEdit->setEnabled(false);//不可用ui->sendBtn-&g…

软考121-上午题-【软件工程】-敏捷方法

一、敏捷方法 敏捷开发的总体目标是通过“尽可能早地、持续地对有价值的软件的交付”使客户满意。通过在软件开发过程中加入灵活性&#xff0c;敏捷方法使用户能够在开发周期的后期增加或改变需求。 敏捷过程的典型方法有很多&#xff0c;每一种方法基于一套原则&#xff0c;这…

初始C++之缺省参数 函数重载 引用

初始C之缺省参数 函数重载 引用& 文章目录 初始C之缺省参数 函数重载 引用&一、缺省参数1.1 缺省参数的定义1.2 缺省参数的分类1.3 注意事项 二、 函数重载2.1 函数重载的定义2.2 参数个数不同2.3 参数类型不同2.4 类型顺序不同2.5 为什么C语言不支持函数重载 三、引用…

百度Create AI开发者大会剧透丨用好三大AI神器 ,人人都是开发者

程序员会消失&#xff0c;真的吗&#xff1f;大模型的下一站是什么&#xff1f;开发者的机会在哪里&#xff1f;什么才是最好用的AI应用开发工具&#xff1f;在4月16日举办的2024百度Create AI开发者大会上&#xff0c;百度创始人、董事长兼首席执行官李彦宏将就这些备受瞩目的…

蓝桥杯第十三届电子类单片机组决赛程序设计

前言 一、决赛题目 1.比赛题目 2.题目解读 二、功能实现 1.关于定时器资源 1&#xff09;超声波和NE555需要的定时器资源 2&#xff09;定时器2 2.单位切换 3.数据长度不足时&#xff0c;高位熄灭 4.AD/DA多通道的处理 5.PWM输出 6.长按功能的实现 三、完整代码演…

心法利器[112] | 考古RAG-20年RAG概念提出的论文

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。 2023年新的文章合集已经发布&#xff0c;获取方式看这里&#xff1a;又添十万字-CS的陋室2023年文章合集来袭&#xff0c;更…

瑞_23种设计模式_访问者模式

文章目录 1 访问者模式&#xff08;Visitor Pattern&#xff09;1.1 介绍1.2 概述1.3 访问者模式的结构1.4 访问者模式的优缺点1.5 访问者模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 拓展——双分派4.1 分派4.2 动态分派&#xff08;多态&am…

ubuntu 20.04 更新显卡驱动

1. 问题描述 $ watch -n 1 nvidia-smi画面不动 而且运行 pytorch 代码时出现问题&#xff1a; UserWarning: CUDA initialization: The NVIDIA driver on your system is too old (found version 11070). Please update your GPU driver by downloading and installing a new…

libVLC 视频窗口上叠加透明窗口

很多时候&#xff0c;我们需要在界面上画一些三角形、文字等之类的东西&#xff0c;我们之需要重写paintEvent方法&#xff0c;比如像这样 void Widget::paintEvent(QPaintEvent *event) 以下就是重写的代码。 void Widget::paintEvent(QPaintEvent *event) {//创建QPainte…