首页 > 其他分享 >文件IO常用api

文件IO常用api

时间:2024-08-12 11:29:50浏览次数:5  
标签:__ 文件 常用 EOF int restrict api char IO

文件IO常用api

打开/关闭文件

fopen

该api用于打开指定的文件

FILE *fopen (const char *__restrict __filename,const char *__restrict __modes)
const char *__restrict __filename:表示要打开的文件和路径
const char *__restrict __modes:表示要访问模式
return:结构体指针 表示一个文件

常用访问模式如下:

1、"r":只读模式,若文件不存在则打开失败

2、"w":只写模式,若文件存在则会清空并写入文件,若不存在则会创建新文件

3、"a":只追加写模式,若文件存在则从文件末尾继续写入文件,若不存在则会创建新文件

4、"r+":读写模式,文件必须存在,该模式下可以读入和写出文件

5、"w+":读写模式,可读取写入文件,若不存在则会创建新文件

6、"a+":读写追加模式,可读取文件,写入文件从文件末尾开始,若不存在则会创建新文件

例:

char *Filename = "test.txt";
File *iofile = fopen(Filename,"r");

fclose

该api用于在程序结束时关闭已经打开的文件

int fclose (FILE *__stream)
FILE *__stream:需要关闭的文件
return:成功返回0,失败返回EOF(-1)

例:

int Close_Result = fclose(iofile);
if (Close_Result == -1) {
	perror("fclose");
	exit(EXIT_FAILURE);
}

向文件中写入数据

fputc

该api用于向文件中写入一个字符

int fputc (int __c, FILE *__stream);
int __c: ASCII码对应的char
FILE *__stream:打开的一个文件
return:成功返回的char 失败返回EOF

例:

int Result = fputc(48,iofile);
if (Result == EOF) {
    perror("fputc");
    exit(EXIT_FAILURE);
}

fputs

该api用于向文件中写入一个字符串

int fputs (const char *__restrict __s, FILE *__restrict __stream)
char *__restrict __s: 需要写入的字符串
FILE *__restrict __stream: 要写入的文件,写在哪里取决于访问模式
return: 成功返回非负整数(一般是 0,1) 失败返回 EOF

例:

char *example = "Hello World!";
int Result = fputs(example,iofile);
if (Result == EOF) {
    perror("fputs");
    exit(EXIT_FAILURE);
}

fprintf

该api用于向文件写入指定的内容

fprintf (FILE *__restrict __stream, const char *__restrict __fmt, ...)
FILE *__restrict __stream: 要写入的文件,写在哪里取决于访问模式
char *__restrict __fmt: 要写入的内容,可以包含占位符用于输出指定内容
...: 若*__restrict __fmt中使用了占位符,需要写入对应的变量
return: 成功返回正整数(写入字符总数不包含换行符) 失败返回 EOF

例:

int years = 18;
int Result = fprintf(iofile,"我今年%d岁了\n",years);
if (Result == EOF) {
    perror("fputs");
    exit(EXIT_FAILURE);
}

从文件中读取数据

fgetc

该api用于从文件中读取一个字符

int fgetc (FILE *__stream)
FILE *__stream: 需要读取的文件
return: 读取的一个字节 到文件结尾或出错返回 EOF

例:

int Result = fgetc(iofile);
if (Result == EOF) {
    perror("fgetc");
    exit(EXIT_FAILURE);
}

fgets

该api用于从文件中读取一个字符串

fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
char *__restrict __s: 接收读取的数据字符串
int __n: 能够接收数据的长度
FILE *__restrict __stream: 需要读取的文件
return: 成功返回字符串 失败返回 NULL(可以直接用于 while)

例:

char buf[100] = {0};
while(fgets(buf,sizeof(buf),iofile) != NULL) {
    printf("%s",buf);
}

fscanf

该api用于从文件中读取变量等数据

int fscanf (FILE *__restrict __stream, const char *__restrict __format, ...)
FILE *__restrict __stream: 读取的文件
char *__restrict __format: 读取的匹配表达式
...: 变长参数列表 用于接收匹配的数据
return: 成功返回参数的个数 失败返回 0 报错或结束返回 EOF

例:

int a,b;
int Result = fscanf(iofile,"%d%d",&a,&b);
if (Result == EOF) {
    perror("fgetc");
    exit(EXIT_FAILURE);
} 
else {
    printf("%d + %d = %d\n",a,b,a+b);
}

标准输入/输出/错误

stdin

该api用于从控制台读取数据

例:

fgets(buf,sizeof(100),stdin);

stdout

该api用于向控制台输出数据

例:

fputs(buf,stdout);

stderr

该api一般用于输出错误日志

例:

fputs(buf,stderr);

系统调用

open

该api用于打开一个标准的文件描述符

int open (const char *__file, int __oflag, ...)
const char *__file:表示要获取描述符的文件
int __oflag:用于指定打开文件的模式
...:额外参数,例如当使用O_CREAT模式时,需要使用二进制传入创建文件的权限参数,例如0666
return:成功时返回该文件的文件描述符,失败返回EOF

常用的打开模式如下:

1、O_RDONLY:以只读模式打开

2、O_WRONLY:以只写模式打开

3、O_RDWR:以读写模式打开

4、O_CREAT:如果文件不存在,则创建一个新文件

5、O_APPEND:将所有写入操作追加到文件的末尾

例:

int FD = open(iofile,O_RDWR | O_CREATE,0666);

read

该api用于读取已经打开的文件描述符

ssize_t read (int __fd, void *__buf, size_t __nbytes)
int __fd:一个整数,表示要从中读取数据的文件描述符
void *__buf:一个指向缓冲区的指针,读取的数据将会被储存在这个缓冲区    
size_t __nbytes:一个size_t类型的整数,表示要读取字节的最大数,实际读取的字节数可能达不到申请的最大值
return:成功时返回读取到的字节数,失败时返回EOF

例:

ssize_t Result = read(FD,buf,sizeof(buf));
if (Result == EOF) {
    perror("read");
    exit(EXIT_FAILURE);
} 

write

该api用于对已经打开的文件描述符写入内容

ssize_t write (int __fd, const void *__buf, size_t __n)
int __fd:一个整数,表示要写入数据的文件描述符
const void *__buf:一个指向缓冲区的指针,要写入的数据需要先存放在这个缓冲区中
size_t __n:一个size_t类型的整数,表示写入数据的字节数
return:成功时返回写入的字节数,失败时返回EOF

例:

ssize_t Result = write(FD,buf,sizeof(buf));
if (Result == EOF) {
    perror("write");
    exit(EXIT_FAILURE);
} 

close

该api用于在程序结尾时关闭对文件描述符的引用

int close (int __fd)
int __fd:一个整数,表示要关闭的文件描述符
return:成功时返回0,失败时返回EOF

例:

int Result = close(FD);
if (Result == EOF) {
    perror("close");
    exit(EXIT_FAILURE);
} 

标签:__,文件,常用,EOF,int,restrict,api,char,IO
From: https://www.cnblogs.com/alin250017/p/18354611

相关文章

  • 使用API Monitor探测QQ安装包在创建桌面快捷方式时都调用了哪些API及COM接口,去解决C++
    目录1、通过代码制作安装包程序,不再使用专用的打包工具2、问题说明3、为啥路径中包含环境变量%ProgramFiles%会报找不到路径呢?4、使用APIMonitor监测QQ安装包在创建桌面快捷方式时都调用哪些COM组件的接口5、同时勾选IShelllinkDatalist接口类的接口,重新开启监测6、最后......
  • 使用 Python 操作 Stable Diffusion 进行 AI 绘图
    在几年前,AI领域对于普通人来说,还是无法触及的高岭之花。但随着chatGPT的爆火,AI变得越来越大众化,大量的工具让你可以在不具备任何前置知识的情况下使用AI,其中最火热的便是AI绘图了。相信很多人都知道Midjourney这个网站,只要输入相关的文字,便可通过网站背后的AI产出相对......
  • iPhone官方商店软件下载---免费看各种剧第③弹【iOS版包括iPad】
    ①点击iPhone自带软件AppStore②点击搜索,输入“便利阅读”,点击下载到手机 ③进入软件页面后,我们需要激活页面,点击“feedback” ④在反馈界面输入“真厉害”,点击“提交”⑤等软件闪退后,再点击重新进入,就可出现如下页面 ......
  • 记录JSch连接SFTP Exception:Algorithm negotiation fail问题解决
    问题描述:关于正式环境访问外网连接不成功 1、首先检查是否开放防火墙(已确认开放),策略开放后,通过命令连接是否畅通: 通过telnet命令,可以得出,访问畅通。telnet192.168.1.122 2、查看生产环境日志,观察生产环境访问外网服务器异常:抛出异常,提示:算法协商失败com.jcraft.j......
  • 调用百度api的情绪分析网站(Flask+HTML)搭建(附超详细代码)
      概要:本文调用多个api接口来进行不同类型(数据文件)情绪分析处理,并利用flask框架与前端联调将自己的情绪分析项目部署到服务器端。。实现下图功能。(第一篇文章小小记录下,要是有帮助就点个赞叭)一.免费申请百度api并调用首先在百度智能云中申请免费的自然语言处理api选......
  • Android Studio报错: A problem occurred starting process command ,CreateProcess er
    AndroidStudio报错:Aproblemoccurredstartingprocesscommand,CreateProcesserror=2,系统找不到指定的文件一、遇到问题二、解决问题重新下载了22.0.7026061和22.1.7171670只在cmake.dir中修改了路径(ndk.dir中修改了路径[未尝试])clean+SyncProject,OK了!......
  • Android studio报错 Caused by: org.gradle.api.internal.plugins.PluginApplicationE
    Androidstudio报错Causedby:org.gradle.api.internal.plugins.PluginApplicationExceptionAndroidstudio运行报错:Causedby:org.gradle.api.internal.plugins.PluginApplicationException:Failedtoapplyplugin[id‘com.android.application’]解决方法:在项......
  • OpenAI API: How do I handle errors in Python?
    题意:在使用OpenAIAPI进行Python开发时,怎样处理错误?问题背景:Itriedusingthebelowcode,buttheOpenAIAPIdoesn'thavethe AuthenticationError methodinthelibrary.HowcanIeffectivelyhandlesucherror.我尝试使用下面的代码,但是OpenAIAPI的库中并没......
  • API安全与等保测评:接口安全测试技术与工具选择
    关键技术点:1.认证与授权:检查API是否实施了强大的身份验证机制,如OAuth2.0、JWT,并验证授权逻辑是否严谨。2.输入验证:测试API对用户输入的处理,确保有效防止SQL注入、跨站脚本(XSS)等攻击。3.数据加密:评估传输层安全(TLS)配置以及敏感数据在存储和传输时的加密策略。4.速率限......
  • 当 Spring 循环依赖碰上 Aysnc,调试过程中出现 BeanCurrentlyInCreationException,有点
    开心一刻前两天有个女生加我,我同意了第一天,她和我聊文学,聊理想,聊篮球,聊小猫小狗第二天,她和我说要看我腹肌吓我一跳,我反手就删除拉黑,我特喵一肚子的肥肉,哪来的腹肌!循环依赖关于Spring的循环依赖,我已经写了4篇Spring的循环依赖,源码详细分析→真的非要三级缓存吗再......