【C语言】vfprintf函数

vfprintf 是 C 语言中的一个函数,它是 fprintf 函数的变体,用于格式化输出到文件中。vfprintf 函数接受一个格式化字符串和一个指向可变参数列表的指针,这个列表通常是通过 va_list 类型来传递的。vfprintf 函数的主要用途是在需要处理不定数量的参数时,提供一种灵活的输出格式化方式。

原型

int vfprintf(FILE *stream, const char *format, va_list ap);
  1. stream 是指向一个 FILE 对象的指针,这个对象代表了一个输出流,通常是打开的文件。
  2. format 是一个格式化字符串,它包含一个或多个格式化指令,这些指令将被用来格式化输出。
  3. ap 是一个指向 va_list 类型的指针,va_list 是一个用来表示可变参数列表的类型。

说明

vfprintf 函数中,va_list 类型用于访问参数列表中的各个参数。va_list 实际上是一个简单的类型定义,通常定义为 typedef int va_list,它只是一个整数类型的别名,用于在参数列表中进行偏移计算。

使用 vfprintf 函数时,通常需要结合 va_startva_argva_end 宏来正确地处理可变参数列表。这些宏用于初始化 va_list 变量、获取参数列表中的下一个参数以及清理 va_list 变量,它们通常在 stdarg.h 头文件中定义。

vfprintf 函数根据 format 字符串和 ap参数列表的内容,将格式化的数据写入到 stream 指向的文件中。如果函数成功执行,它将返回写入的字符数。如果出现错误,它将返回一个负值。

这个函数通常与 <stdio.h> 和 <stdarg.h> 头文件一起使用。

示例

#include <stdio.h>  
#include <stdarg.h>  int vfp(FILE *stream, char *fmt, ...) {  va_list args;  va_start(args, fmt);  int cnt = vfprintf(stream, fmt, args);  va_end(args);  return cnt;  
}  int main() {  FILE *fp;  int inumber = 30;  float fnumber = 90.0;  char string[4] = "abc";  fp = tmpfile();  if (fp == NULL) {  perror("tmpfile() error");  return 1;  }  vfp(fp, "%d %f %s", inumber, fnumber, string);  if (fseek(fp, 0L, SEEK_SET) == -1) {  perror("fseek() error");  return 1;  }  if (ftell(fp) == -1L) {  perror("ftell() error");  return 1;  } else {  printf("The file position is now %ld.\n", ftell(fp));  }  return 0;  
}

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

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

相关文章

NGINX安装升级

nginx介绍 Nginx的版本分为开发版、稳定版和过期版&#xff0c;nginx以功能丰富著称&#xff0c;它即可以作为http服务器&#xff0c;也可以作为反向代理服务器或者邮件服务器&#xff0c;也可以作为反向代理服务器或者邮件服务器&#xff0c;能够快速的响应静态网页的请求&am…

vue+django 开发环境跨域前后端联调配置

vue环境是127.0.0.1:8080&#xff0c;django环境是127.0.0.1:8000 要解决url相对路径和Axios跨域权限问题。 注意&#xff1a;程序发起了一个 POST 请求&#xff0c;但请求的 URL 没有以斜杠结尾。Django 默认设置是无法执行重定向到带斜杠 URL的。例如&#xff1a;url http:/…

远传智能水表一般应用于哪些场景?

远传智能水表是一种在水表领域应用广泛的创新技术&#xff0c;它利用物联网和无线通信技术使水表具备了远程监测和数据传输的能力。这种智能水表的应用场景多种多样&#xff0c;可适用于各个领域和环境。那么&#xff0c;远传智能水表一般应用于哪些场景呢&#xff1f; 首先&am…

ElasticSearch之Refresh API

使用本方法&#xff0c;显式的执行refresh操作。 默认情况下&#xff0c;ElasticSearch启动后台任务&#xff0c;周期性执行refresh操作&#xff0c;周期使用参数index.refresh_interval控制。 本方法触发的refresh为同步操作&#xff0c;运行完毕之后才会返回任务的执行结果。…

CPU密集型和IO密集型任务

1. CPU密集型任务 1.1 定义 CPU密集型任务是指在任务执行过程中&#xff0c;主要由计算操作占用大部分时间&#xff0c;而不是等待外部资源的任务类型。 1.2 特点 计算密集性&#xff1a; 需要大量的数学运算、逻辑判断和数据处理。高CPU利用率&#xff1a; 任务执行期间&a…

9.关于Java的程序设计-基于Springboot的家政平台管理系统设计与实现

摘要 随着社会的进步和生活水平的提高&#xff0c;家政服务作为一种重要的生活服务方式逐渐受到人们的关注。本研究基于Spring Boot框架&#xff0c;设计并实现了一种家政平台管理系统&#xff0c;旨在提供一个便捷高效的家政服务管理解决方案。系统涵盖了用户注册登录、家政服…

mybatis数据输出-map类型输出

1、建库建表 create table emp (empNo varchar(10) null,empName varchar(100) null,sal int null,deptno varchar(10) null ); 2、pom.xml <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis<…

氧化性低密度脂蛋白抗体原料——博迈伦生物

氧化性低密度脂蛋白抗体原料——博迈伦生物 引言 氧化性低密度脂蛋白&#xff08;oxLDL&#xff09;是动脉粥样硬化等心血管疾病的关键因素之一。抗体作为诊断和研究工具&#xff0c;在oxLDL的检测和相关疾病的研究中发挥着重要作用。本文将深入探讨氧化性低密度脂蛋白抗体原料…

Elasticsearch 8.9 flush刷新缓存中的数据到磁盘源码

一、相关API的handler1、接收HTTP请求的hander2、每一个数据节点(node)执行分片刷新的action是TransportShardFlushAction 二、对indexShard执行刷新请求1、首先获取读锁&#xff0c;再获取刷新锁&#xff0c;如果获取不到根据参数决定是否直接返回还是等待2、在刷新之后transl…

芯知识 | 如何选择合适的单片机语音芯片?

随着科技的飞速发展&#xff0c;单片机语音芯片已经广泛应用于各个领域。然而&#xff0c;在众多的芯片产品中&#xff0c;如何选择合适的单片机语音芯片成为了一个重要的问题。本文将为您提供一些建议&#xff0c;助您找到最适合您需求的单片机语音芯片。 一、明确需求 在选…

Android Audio实战——音频链路分析(二十五)

在 Android 系统的开发过程当中,音频异常问题通常有如下几类:无声、调节不了声音、爆音、声音卡顿和声音效果异常(忽大忽小,低音缺失等)等。尤其声音效果这部分问题通常从日志上信息量较少,相对难定位根因。想要分析此类问题,便需要对声音传输链路有一定的了解,能够在链…

AI发展下服务器的选择非常重要

在AI发展下&#xff0c;服务器的选择非常重要。以下是一些选择服务器时需要考虑的因素&#xff1a; 1. 计算能力&#xff1a;AI需要大量的计算资源来进行训练和推理。因此&#xff0c;选择具有强大计算能力的服务器是至关重要的。 2. 内存容量&#xff1a;AI需要大量的内存来…

cryptojs加密和java解密:AES算法

试了一下午终于跑通了&#xff0c;一开始尝试RC4算法生成的密文在java中解密不出来&#xff0c;放弃了&#xff0c;改用AES。 js代码 import aes from crypto-js/aes; import base from crypto-js/enc-base64;function encrypt(plaintext: string) {const iv base.parse(ZGY…

【论文解读】:大模型免微调的上下文对齐方法

本文通过对alignmenttuning的深入研究揭示了其“表面性质”&#xff0c;即通过监督微调和强化学习调整LLMs的方式可能仅仅影响模型的语言风格&#xff0c;而对模型解码性能的影响相对较小。具体来说&#xff0c;通过分析基础LLMs和alignment-tuned版本在令牌分布上的差异&#…

测试:SSE VS WebSocket

SSE&#xff08;Server-Sent Events&#xff09; SSE&#xff08;Server-Sent Events&#xff09;接口是一种实现服务器到客户端单向实时通信的技术。通过SSE&#xff0c;服务器可以主动向客户端推送数据&#xff0c;而不需要客户端不断地向服务器请求数据。这种技术特别适合于…

100多种视频转场素材|专业胶片,抖动,光效电影转场特效PR效果预设

100多种 Premiere Pro 效果预设&#xff0c;包含&#xff1a;“胶片框架”、“胶片烧录”、“彩色LUT”、“相机抖动”、“电影Vignette”和“胶片颗粒”。非常适合制作复古风格的视频&#xff0c;添加独特的色彩。包括视频教程。 来自PR模板网&#xff1a;https://prmuban.com…

git 本地有改动,远程也有改动,且文件是自动生成的配置文件

在改动过的地方 文件是.lock文件&#xff0c;自动生成的。想切到远程的分支&#xff0c;但是远程的分支也有改动过。这时候就要解决冲突&#xff0c;因为这是两个分支&#xff0c;代码都是不一样的&#xff0c;要先把这改动的代码提交在本地或者提交在本分支的远程才可以切到其…

在Arch Linux上安装yay

有点麻烦。 准备 # pacman -Syu # pacman -S --needed base-devel git 变身为普通用户 不能使用root下载代码。所以要变身为普通用户&#xff1a; # sueradd tsit # su tsit 下载代码 $ git clone https://aur.archlinux.org/yay.git 编译安装 $ cd yay $ makepkg -si…

ke13--10章-1数据库JDBC介绍

注册数据库(两种方式),获取连接,通过Connection对象获取Statement对象,使用Statement执行SQL语句。操作ResultSet结果集 ,回收数据库资源. 需要语句: 1Class.forName("DriverName");2Connection conn DriverManager.getConnection(String url, String user, String…

在 CentOS 或 Red Hat 系统上安装 Citus 组件

要在 CentOS 或 Red Hat 系统上安装 Citus 组件&#xff0c;你可以按照以下步骤操作&#xff1a; 首先&#xff0c;使用 curl 命令下载 Citus 社区版的安装脚本&#xff1a; curl https://install.citusdata.com/community/rpm.sh > add-citus-repo.sh接着&#xff0c;使用 …