首页 > 编程语言 >C++(fprintf())

C++(fprintf())

时间:2024-12-05 15:44:09浏览次数:3  
标签:输出 格式化 文件 C++ fprintf file 字符串

目录



fprintf() 是 C 和 C++ 中用于格式化输出到文件的标准库函数。它的功能类似于 printf(),但与 printf() 不同的是,fprintf() 将格式化后的数据输出到指定的文件,而不是标准输出流(通常是屏幕)。

1. 函数定义

int fprintf(FILE *stream, const char *format, ...);

参数:

  • stream:一个 FILE* 类型的指针,指向目标文件。如果要输出到标准输出流,可以使用 stdout;如果要输出到标准错误流,可以使用 stderr
  • format:一个格式化字符串,指定输出的格式。它可以包含普通字符(将直接写入文件)以及格式说明符(以 % 开头的字符串,用于指定如何显示后面的参数)。
  • ...:格式化字符串中指定的变量,可以是任意数量的参数,具体取决于 format 字符串中包含的格式说明符。

返回值:

  • 返回成功写入的字符数(不包括终止的空字符 '\0')。
  • 如果发生错误,返回负值。


2. 常见格式说明符

  • %d:输出一个整数。
  • %f:输出一个浮动点数。
  • %s:输出一个字符串。
  • %c:输出一个字符。
  • %x:输出一个十六进制数。


3. 示例代码

#include <cstdio>

int main() {
    FILE *file = fopen("example.txt", "w");
    if (file == nullptr) {
        perror("Error opening file");
        return 1;
    }

    int age = 25;
    double height = 5.9;
    const char *name = "John";

    fprintf(file, "Name: %s\n", name);         // 输出字符串
    fprintf(file, "Age: %d\n", age);           // 输出整数
    fprintf(file, "Height: %.1f\n", height);   // 输出浮动点数,保留1位小数

    fclose(file);  // 关闭文件
    return 0;
}

说明:

  1. fopen("example.txt", "w") 用于打开文件 example.txt,以写入模式 (w) 打开。若文件不存在,会创建该文件。如果文件已存在,文件内容会被覆盖。
  2. fprintf(file, "Name: %s\n", name) 输出格式化的字符串 "Name: John\n" 到文件。
  3. fclose(file) 用于关闭文件。

错误处理:

  • 如果文件打开失败,fopen 会返回 nullptr,这时可以通过 perror()errno 查看错误信息。
  • 如果 fprintf 无法写入文件(如文件没有写权限),它会返回负值,表示发生了错误。


4. 适用场景

  • 将程序的输出结果写入日志文件、配置文件等。
  • 格式化输出可以让你控制输出的内容格式(例如,控制小数点后位数、输出宽度等)。

fprintf() 是一个非常常用的函数,尤其在处理文件I/O操作时,能够帮助开发者高效地将信息写入文件并保持格式化。



标签:输出,格式化,文件,C++,fprintf,file,字符串
From: https://www.cnblogs.com/keye/p/18588730

相关文章

  • (2024最新毕设合集)基于SSM的河北省博物馆管理系统-02350|可做计算机毕业设计JAVA、PHP
    目 录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2 河北省博物馆管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3操作可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能性分析......
  • 【C++】7000字剖析红黑树的概念规则和底层代码实现
    目录一、红黑树的概念二、怎么做到最长路径与最短路径相差小于等于两倍?(性质)     三、极端场景分析最长路径和最短路径:四、AVL树和红黑树的效率对比:五、树的路径包括叶子结点的空结点六、红黑树的插入结点时的相关规则:(一)、插入结点的颜色必须为红色(二)、处理规......
  • 冷门知识点:C++如何调试
    哈喽大家好,我是@学霸小羊,今天讲一个比较冷门的东西:C++如何调试。前几天我想要调试一个代码,搞半天,还没调出来。我在网上搜了半天,都是要下载一些诸如gdb之类的软件,我实在是不想下载这些五花八门的软件了,于是和我的损友研究了半天,总算研究出来了。注:以Dev-C++ 5.10版本进行讲......
  • 【C++】类的继承的深入探讨
    继承是扩展现有类并为基类提供新功能的一种方式。本文主要探讨一个问题:子类会包含父类所包含的一切吗?起初,作者认为这个问题的答案是否定的,因为子类无法访问父类的private成员但是,运行下述一个简易的示例代码,得到Entity类和Player类的大小分别是8和16。#include<iostream>cla......
  • 反转字符串中每个单词的字符顺序,但保持单词之间的相对顺序不变(C++)
     需求:用户输入一行字符(一个英语句子lastweek,Iwenttocinima.),将该行字符按照每个单词逆序输出(即输出:tsalkeew,Itnewotaminic.)。要求1.写一个函数用来实现每个单词的字符顺序颠倒,拿到头和尾,对代码进行遍历(判断是否为单词首字母:当前为字母,前面是空格或者什么都没有;判......
  • 【最新原创毕设】基于SpringBoot的网上报修平台+94800(免费领源码)可做计算机毕业设计JA
    摘要随着信息技术的快速发展和普及,高校宿舍管理面临着诸多挑战与机遇。传统的宿舍管理模式,如手工记录报修信息、纸质文档管理等,已无法满足现代高校对效率和便捷性的需求。因此,开发一套高效、智能的网上报修平台显得尤为重要。基于springBoot的网上报修平台的设计和实现正......
  • c++实验五
    task1:publisher.hpp:1#pragmaonce23#include<iostream>4#include<string>56usingstd::cout;7usingstd::endl;8usingstd::string;910//发行/出版物类:Publisher(抽象类)11classPublisher{12public:13Publisher(const......
  • 使用 C++ 调用 YOLOv3 模型进行物体检测
    环境准备首先,确保你已经安装了以下工具:OpenCV:用于图像处理。Darknet:用于YOLO模型的推理。C++编译器:如g++。2.安装Darknet克隆Darknet仓库并进入目录:bashgitclonehttps://github.com/pjreddie/darknet.gitcddarknet使用Makefile编译Darknet(如果使用GPU......
  • [C++]常用的windows控制台操作
    目录一、光标1.隐藏光标2.移动光标二、窗口大小1.调整大小2、固定大小三、颜色1.cmd命令2.直接printf颜色四、控制台1.标题一些常用的控制台操作!注意:该文章全程需要:Windows.h头文件,因为使用了Windows的API一、光标1.隐藏光标voidHideCursor(){ CONSOLE_CURSOR_I......
  • 【编程】C++ 中逻辑与运算符 `&&` 具有短路求值的特性在assert中的应用
    关于assert在C++中使用条件&&字符串格式的示例以及对其宏定义解析的相关说明:1.assert基本介绍及示例使用在C++中,assert是一个宏定义,它位于<cassert>头文件(在C中是<assert.h>)中,用于在程序开发阶段进行调试检查。它的基本语法形式是assert(表达式),当......