fputs的概念和使用案例

news2025/2/7 11:43:27

fputs 是 C 语言中用于向文件写入字符串的标准库函数。它与 puts 类似,但不会自动添加换行符,且支持向任意文件流(如磁盘文件、标准输出等)写入数据。


概念解析

  • 函数原型int fputs(const char *str, FILE *stream);
    • str:要写入的字符串(需以 \0 结尾)。
    • stream:目标文件指针(如通过 fopen 打开的文件)。
    • 返回值:成功时返回非负值,失败返回 EOF
  • 特点
    • 写入字符串内容,不包含结尾的 \0
    • 不会自动添加换行符(与 puts 不同)。

使用案例

1. 写入文件(覆盖模式)
#include <stdio.h>

int main() {
    FILE *fp = fopen("test.txt", "w");  // 以写入模式打开文件(覆盖原有内容)
    if (fp == NULL) {
        perror("文件打开失败");
        return 1;
    }

    fputs("这是第一行\n", fp);  // 写入字符串并手动添加换行符
    fputs("这是第二行", fp);    // 不添加换行符

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

输出文件内容

这是第一行
这是第二行

2. 追加内容到文件
#include <stdio.h>

int main() {
    FILE *fp = fopen("test.txt", "a");  // 以追加模式打开文件
    if (fp == NULL) {
        perror("文件打开失败");
        return 1;
    }

    fputs("\n追加的内容", fp);  // 在文件末尾添加新内容

    fclose(fp);
    return 0;
}

追加后的文件内容

这是第一行
这是第二行
追加的内容

3. 向标准输出写入数据
#include <stdio.h>

int main() {
    fputs("Hello, 标准输出!\n", stdout);  // 写入到控制台
    return 0;
}

控制台输出

Hello, 标准输出!

4. 结合循环写入多行内容
#include <stdio.h>

int main() {
    FILE *fp = fopen("data.txt", "w");
    if (fp == NULL) {
        perror("文件打开失败");
        return 1;
    }

    char *lines[] = {"Line 1\n", "Line 2\n", "Line 3"};
    for (int i = 0; i < 3; i++) {
        fputs(lines[i], fp);  // 逐行写入数组内容
    }

    fclose(fp);
    return 0;
}

生成文件内容

Line 1
Line 2
Line 3

注意事项

  1. 错误检查:始终检查 fopenfputs 的返回值,确保文件操作成功。
  2. 换行控制:需手动添加 \n 控制换行。
  3. 文件模式
    • "w":覆盖写入,文件不存在则创建。
    • "a":追加写入,文件不存在则创建。
    • "r+":读写模式(需文件已存在)。

通过灵活使用 fputs,可以实现对文本文件的精确写入操作。

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

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

相关文章

ASP.NET Core标识框架Identity

目录 Authentication与Authorization 标识框架&#xff08;Identity&#xff09; Identity框架的使用 初始化 自定义属性 案例一&#xff1a;添加用户、角色 案例二&#xff1a;检查登录用户信息 案例三&#xff1a;实现密码的重置 步骤 Authentication与Authorizatio…

PFAS(全氟烷基和多氟烷基物质)测试流程详细介绍

PFAS&#xff08;全氟烷基和多氟烷基物质&#xff09;测试详细介绍 什么是PFAS&#xff1f; PFAS是(Per-and polyfluoroalkyl substances)的简称&#xff0c;中文名&#xff1a;全氟烷基和多氟烷基物质&#xff0c;是一系列合成有机氟化物的总称&#xff0c;是指至少含有一个…

宝塔面板端口转发其它端口至MySQL的3306

最近需要把服务器的MySQL服务开放给外网&#xff0c;但又希望公开给所有人。也不想用默认的3306端口。同时也不想改变MySQL的默认端口。 这时候最好的办法就是用一个不常用的端口来转发至3306上去。例如使用49306至3306&#xff0c;外网通过49306来访问&#xff0c;内网依然使用…

inquirer介绍及配合lerna在Vue中使用示例

目录 安装基本用法使用多个提示框动态选择&#xff08;动态选项&#xff09;表单式输入配合lerna在Vue中使用示例 Inquirer 是一个用于创建交互式命令行工具的 Node.js 库&#xff0c;常用于收集用户输入。它提供了多种类型的提示框&#xff0c;可以用于创建交互式应用程序&…

基于MODIS/Landsat/Sentinel/国产卫星遥感数据与DSSAT作物模型同化的作物产量估算

基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具&#xff0c;可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系&#xff0c;为不同条件下作物生长发育及产量预测、栽培管理、环境评价以及未来气候变化评估等提供了…

如何打开vscode系统用户全局配置的settings.json

&#x1f4cc; settings.json 的作用 settings.json 是 Visual Studio Code&#xff08;VS Code&#xff09; 的用户配置文件&#xff0c;它存储了 编辑器的个性化设置&#xff0c;包括界面布局、代码格式化、扩展插件、快捷键等&#xff0c;是用户全局配置&#xff08;影响所有…

【Uniapp-Vue3】从uniCloud中获取数据

需要先获取数据库对象&#xff1a; let db uniCloud.database(); 获取数据库中数据的方法&#xff1a; db.collection("数据表名称").get(); 所以就可以得到下面的这个模板&#xff1a; let 函数名 async () > { let res await db.collection("数据表名称…

【重生之学习C语言----杨辉三角篇】

目录 ​编辑 --------------------------------------begin---------------------------------------- 一、什么是杨辉三角&#xff1f; 二、问题分析 三、算法设计 使用二维数组存储杨辉三角&#xff1a; 递推关系&#xff1a; 格式化输出&#xff1a; 四、代码实现 完…

LabVIEW自定义测量参数怎么设置?

以下通过一个温度采集案例&#xff0c;说明在 LabVIEW 中设置自定义测量参数的具体方法&#xff1a; 案例背景 ​ 假设使用 NI USB-6009 数据采集卡 和 热电偶传感器 监测温度&#xff0c;需自定义以下参数&#xff1a; 采样率&#xff1a;1 kHz 输入量程&#xff1a;0~10 V&a…

Vim的基础命令

移动光标 H(左) J(上) K(下) L(右) $ 表示移动到光标所在行的行尾&#xff0c; ^ 表示移动到光标所在行的行首的第一个非空白字符。 0 表示移动到光标所在行的行首。 W 光标向前跳转一个单词 w光标向前跳转一个单词 B光标向后跳转一个单词 b光标向后跳转一个单词 G 移动光标到…

复制粘贴小工具——Ditto

在日常工作中&#xff0c;复制粘贴是常见的操作&#xff0c;但Windows系统自带的剪贴板功能较为有限&#xff0c;只能保存最近一次的复制记录&#xff0c;这对于需要频繁复制粘贴的用户来说不太方便。今天&#xff0c;我们介绍一款开源、免费且功能强大的剪贴板增强工具——Dit…

中国人名汉语拼音字母拼写规则

中国人名汉语拼音字母拼写规则 1. Lv and Lyu2. 中国人名汉语拼音字母拼写规则References 1. Lv and Lyu LongBench: A Bilingual, Multitask Benchmark for Long Context Understanding https://arxiv.org/abs/2308.14508 2. 中国人名汉语拼音字母拼写规则 http://www.moe.g…

MAC OS安装Homebrew

文章目录 1.下载Homebrew2.完成安装3.验证安装4.更新 Homebrew作为一个包管理器&#xff0c;提供了一种简便的方式来安装、更新和卸载各种命令行工具和应用程序。相比于手动下载和编译源代码&#xff0c;或者从不同的网站下载安装包&#xff0c;使用Homebrew可以显著减少这些操…

飞算JavaAI:开辟 AI + 行业趋势的编程新范式

在当今数字化浪潮汹涌澎湃的时代&#xff0c;科技的快速发展正以前所未有的速度重塑着各个行业的面貌。人工智能&#xff08;AI&#xff09;作为其中最具变革性的力量之一&#xff0c;已经深入渗透到众多领域&#xff0c;从金融、医疗到制造业、教育等&#xff0c;无一不在经历…

Axure PR 9 动效 设计交互

大家好&#xff0c;我是大明同学。 这期内容&#xff0c;我们来用Axure制作一组动效。 动效 创建动效元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.选中画布&#xff0c;将画布填充颜色设置为蓝色(#0052D9)。 3.在元件库中拖出一个圆形元件&#xff0c;选中矩形元件&…

DeepSeek 本地部署

DeepSeek 本地部署 一、引言二、为什么选择本地部署 DeepSeek&#xff1f;三、具体步骤1.下载Ollama并安装&#xff08;Ollama 提供 API 支持&#xff09;2. 部署 deepseek-r12.下载Chatbox并配置为本地DeepSeek &#xff08;Chatbox 提供 UI 界面&#xff09; 一、引言 近期&…

网络工程师 (20)计算机网络的概念

一、定义 计算机网络是指将地理位置不同、具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路及通信设备连接起来&#xff0c;在网络操作系统、网络管理软件及网络通信协议的管理和协调下&#xff0c;实现信息传递和资源共享的计算机通信系统。 二、组成 资源子网&…

Unity UI Default Shader分析

文章目录 UI默认材质和Default ShaderShader的属性定义Mask组件支持RectMask2D组件支持其他支持使用Unity UGUI时经常有自定义shader的需求,虽然我们可以直接按照shader lab的规范写出shader,使用也没问题,但如果能让自定义shader符合UI shader的规范,支持Mask,Rect2DMask…

IEEE 802.3/802.2 | LLC / SNAP

注&#xff1a;本文为 “IEEE 802.3/802.2 | LLC / SNAP” 相关文章合辑。 未整理去重。 第三篇部分内容出自第二篇。 802.2 协议 haoay321 2010-01-28 20:52:02 LLC 协议 LLC&#xff08;Logic Link Control&#xff0c;逻辑链路控制&#xff09;是 IEEE 802.2 协议中规定…

【Linux】24.进程间通信(3)

文章目录 3.6 systemv共享内存3.6.1 共享内存函数3.6.3 一个简单的共享内存代码实现3.6.4 一个复杂的共享内存代码实现3.6.4 key和shmid的主要区别: 3.7 systemv消息队列&#xff08;了解&#xff09;3.8 systemv信号量&#xff08;了解&#xff09;进程互斥四个问题理解信号量…