Linux 标准IO的fopen和fclose

getchar(),putchar() ‐‐‐‐ 一个字符
gets(buf),puts(buf) ‐‐‐‐ 一串字符
scanf(),printf() ‐‐‐‐ 一个字符,一串字符都可以

fopen函数的形式

FILE * fopen(constchar *path , cost char *mode)

/*
* @description : 打开一个文件
* @param ‐ path : 指定文件路径 , 如: "./test.txt"
* @param ‐ mode :指定文件的打开方式,如下图:

* @return :fopen: 成功,返回指向该文件的文件指针; 若失败,返回 NULL

*/
mode有以下值:
r :只读方式打开,文件必须存在
r+ :可读写,文件必须存在
rb+ :打开二进制文件,可以读写
rt+: 打开文本文件,可读写
w: 只写,文件存在则文件长度清 0 ,文件不存在则建立该文件
w+: 可读写,文件存在则文件长度清 0 ,文件不存在则建立该文件
a: 附加方式打开只写,不存在建立该文件,存在写入的数据加到文件尾, EOF 符保留
a+ :附加方式打开可读写,不存在建立该文件,存在写入的数据加到文件尾, EOF 符不保留
wb :打开二进制文件,只写 wb+: 打开或建立二进制文件,可读写
wt+: 打开或建立文本文件,可读写
at+: 打开文本文件,可读写,写的数据加在文本末尾 ab+: 打开二进制文件,可读写,写的数据加在文件末尾

fclose函数的形式

函数原型:int fclose(FILE*stream)

关闭一个文件流,使用 fclose 就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区

/*
* @description : 关闭一个已打开的流
* @param ‐ stream : 文件指针(流)

* @return : fclose:成功,返回0; 若失败,返回EOF

*/
#include<stdio.h>
int main()
{
FILE *fp = NULL;/*create a null file创建一个空的指针文件*/
int nRet = 0 ;
fp =fopen("mm","w");/*fp mode w,create*打开指针文件mm,模式为w 可写,没有文件则创建文件/
if (fp == NULL)/*NUll open failed!如果创建不成功,则fp=NULL*/
{
printf("open failed!\n");
return -1;

}
printf("open success!\n");/*成功打开则输出打开成功*/
nRet = fclose(fp);
if(nRet)/*close success,others failed!*如果关闭成功则返回0,如果返回其他,则关闭不成功*/
{

printf("close failed!\n");
return -2;

}
printf("close success!\n");/*成功则返回关闭成功*/
return 0;


}
~    

lpych@lpych-virtual-machine:~$ gcc demo2.c -o demo

编译demo2.c 编译完后的文件为demo

lpych@lpych-virtual-machine:~$ ./demo
运行demo

提示:open success!
close success!

说明打开和关闭文件 mm成功!

lpych@lpych-virtual-machine:~$ ls -l
查看文件的权限,mm文件

因为之前mm文件有创建过,模式为0755,可读可写可执行,可读可执行,可读可执行

因此 lpych用户,可读可写可执行,组用户,可读可执行,其他用户,可读可执行

之前有操作生成过mm,将新文件命名ll

#include<stdio.h>
int main()
{
FILE *fp = NULL;
int nRet = 0 ;
fp =fopen("ll","w");
if (fp == NULL)
{
printf("open failed!\n");
return -1;

}
printf("open success!\n");
nRet = fclose(fp);
if(nRet)
{

printf("close failed!\n");
return -2;

}
printf("close success!\n");
return 0;


}
~  

lpych用户,可读可写,组用户,可读,其他用户,可读 

与w模式相对应

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Prometheus:开源监控解决方案的力量

前言 在当今高度数字化和云原生应用的时代&#xff0c;监控系统是确保系统稳定性和性能的关键组成部分。而 Prometheus 作为一种开源的监控解决方案&#xff0c;正在成为越来越多企业和开发者的首选。本文将深入探讨 Prometheus 的特性、优势以及如何利用它来构建强大的监控系…

圈复杂度.

圈复杂度是衡量代码的重要标准 配置&#xff1a; eslint里面&#xff1a;rules&#xff1a;complexity&#xff1a;[error,10]

第28课 绘制原理图——绘制导线

概述 放置完元器件之后&#xff0c;接着就要用导线将元器件的管脚一个一个连起来了。 绘制导线的方法 点击快速工具条上的“线”命令&#xff0c;进入绘制导线的过程。 点击选择某个管脚或电源端口&#xff0c;作为导线的起始端。 再点击选择另一个管脚或电源端口&#xff0c…

为什么永远不会有语言取代 C/C++?

每个 CPU 都带有一种称为 ISA&#xff08;指令集架构&#xff09;汇编的电路语言。ISA 程序集是一种硬件语言&#xff0c;由基本数据操作、数学计算和结构化编程&#xff08;即 jmp&#xff09;的操作组成。但是&#xff0c;为每个计算需求编写汇编代码无疑是耗时的&#xff0c…

(六)使用统计学方法进行变量有效性测试(43道选择题)

本文整理了使用统计学方法进行变量有效性测试相关的练习题&#xff0c;共43道&#xff0c;适用于想巩固理论基础的同学。来源&#xff1a;如荷学数据科学题库&#xff08;CDA二级-第7章&#xff09;。 1&#xff09; 2&#xff09; 3&#xff09; 4&#xff09; 5&#xff09;…

pinia.js报patchToApply.hasOwnProperty is not a function

vue3 ts pinia.js 先看报错> patchToApply.hasOwnProperty is not a function 错误信息&#xff1a; pinia.js?v91704efd:913 Uncaught (in promise) TypeError: patchToApply.hasOwnProperty is not a functionat mergeReactiveObjects (pinia.js?v91704efd:913:23)…

YOLOv5改进(七)--改进损失函数EIoU、Alpha-IoU、SIoU、Focal-EIOU

文章目录 1、前言2、损失函数代码实现2.1、修改metrics.py2.2、修改loss.py 3、替换EIOU4、替换SIoU5、替换Alpha-IoU6、替换Focal-EIOU7、目标检测系列文章 1、前言 YOLOv5默认使用损失函数为CIoU&#xff0c;本文主要针对损失函数进行修改&#xff0c;主要将bbox_iou函数进行…

昇思25天学习打卡营第2天|onereal》

今天学习内容是了解华为昇思平台。虽然打了卡&#xff0c;但是我的jupyter里面并没有播放按钮&#xff0c;所以还是无法运行代码。反映给昇思吴彦祖小哥了&#xff0c;他说需要专家帮我解决。 我还是要自我表扬一下&#xff0c;不懂就问&#xff0c;切莫不懂装懂&#xff0c;那…

充电宝哪个牌子最好最耐用?耐用西圣、罗马仕、绿联充电宝实测

目前充电宝是我们出行必备的“能量伴侣”。然而&#xff0c;市面上充电宝品牌繁多&#xff0c;让人眼花缭乱&#xff0c;究竟哪个牌子最好最耐用呢&#xff1f;为了给大家找到答案&#xff0c;我们精心挑选了西圣、罗马仕和绿联这三个备受关注的品牌&#xff0c;并对它们的充电…

clion调试opencv程序时,查看内存中图像的方法

很久之前在windows上使用 visual studio中 Image Watch插件查看内存中图像感觉很方便&#xff0c;后来转到liunx上开发后&#xff0c;在clion上一直没有找到对应的插件。之前看到过qtOpenImageDebugger好像有类似功能&#xff0c;vs code好像也可以&#xff0c;但是没有配置。 …

文华6幅图指标公式大全-多空精准买卖点提示指标源码

文华6幅图指标公式大全-多空精准买卖点提示指标源码&#xff1a; HH: HHV ( HIGH ,1)/5 HHV ( HIGH ,2)/5 HHV ( HIGH ,2)/5 HHV ( HIGH ,5)/5 HHV ( HIGH ,8)/5; LL: LLV ( LOW ,1)/5 LLV ( LOW ,2)/5 LLV ( LOW ,2)/5 LLV ( LOW ,5)/5 LLV ( LOW ,8)/5; H1: IFELSE ( H &l…

18.枚举

学习知识&#xff1a;枚举类型、相关的使用方法 Main.java&#xff1a; public class Main {public static void main(String[] args) {myenum[] colorlist myenum.values();//获取枚举中所有对象的引用数组for (myenum one : colorlist){System.out.println(one.toString(…

git提交新仓库代码,提示无权限,但用户名已修改

目录 1 用户名无权限 2 删除用户凭据 2.1 打开控制面板 2.2 找到“凭据管理器” 2.3 删除git历史 3 npm工具库添加git仓库指引 1 用户名无权限 之前因为时间的原因&#xff0c;js-tool-big-box工具库没有提交到github上去&#xff0c;今天想着往上提交一下&#xff0c;但…

如何打造安全DNS以保障业务可用?一文解读

DNS自1987年被实施以来&#xff0c;已成为网络通信中最重要的核心基础设施&#xff0c;同时也是企业对外提供数字服务的关键。没有正常安全的DNS服务&#xff0c;企业经营也就无从谈起。在DNS攻击逐年上升且容易被忽略的现代应用时代&#xff0c;如何打造安全DNS&#xff1f;本…

Mybatis操作数据库(二)

动态SQL 在 MyBatis 中&#xff0c;动态 SQL 是一种强大的特性&#xff0c;它允许根据不同的条件和场景在 SQL 语句中动态地组合和构建部分语句 < if>标签 我们在注册用户的时候,可能会有一个问题注册有两个字段 必填字段和非必填字段,这时我们需要使用动态标签来判定 例…

数据库管理与数据库语句

数据库用户管理及高级sql语句 数据库管理 数据库用户管理 mysql权限表 在mysql中mysql库中的user表是最重要的权限表&#xff0c;记录允许连接到服务器的账号信息以及全局权限&#xff0c; 在mysql库中db和host表也是重要的权限表 db表中存储了用户对某个数据库的操作权限&…

CS-流量通讯特征修改-端口store证书流量通讯规则

免责声明:本文仅做技术交流与学习... 目录 1.修改默认端口&#xff1a; 2.去除store证书特征&#xff1a; 查看证书指纹&#xff1a; 生成证书指纹&#xff1a; 应用证书指纹&#xff1a; 3.去除流量通讯特征&#xff1a; 规则资源 http流量特征修改: https流量特征修改:…

Web APIs-DOM-事件相关整理(完成网页交互)

目录 1.事件监听 2.事件监听绑定 3.事件类型 4.实例注意 5.事件对象 6.环境对象 7.回调函数 1.事件监听 &#xff08;绑定事件/注册事件&#xff09;: 程序检测有没有事件产生&#xff08;事件&#xff1a;比如单机一个按钮&#xff08;编程时系统发生的动作或者事情&a…

C++ 14新特性个人总结

variable templates 变量模板。这个特性允许模板被用于定义变量&#xff0c;就像之前模板可以用于定义函数或类型一样。变量模板为模板编程带来了新的灵活性&#xff0c;特别是在定义泛化的常量和元编程时非常有用。 变量模板的基本语法 变量模板的声明遵循以下基本语法&am…

云计算基础知识

前言&#xff1a; 随着ICT技术的高速发展&#xff0c;企业架构对计算、存储、网络资源的需求更高&#xff0c;急需一种新的架构来承载业务&#xff0c;以获得持续&#xff0c;高速&#xff0c;高效的发展&#xff0c;云计算应运而生。 云计算背景 信息大爆炸时代&#xff1a…