3 个 C 程序示例,用于创建包含数据的文件

2023-10-26

本教程介绍如何使用 C 程序创建文件。

在这些示例中,我们将创建新的 HTML 文件并向其中写入一些内容。

文件的内容会有所不同,但这三个 C 示例程序应该向大家说明如何使用 fopenfprintf 等 c 文件函数来创建和操作文件。

示例一

这是第一个示例,它创建了一个名为 index.html 的新文件,其中包含一些 HTML 内容。

使用以下示例代码创建 f1.c。

f1.c

#include <stdio.h> 
#include <stdlib.h> 

int main( void ) 
{ 
  FILE      *ptrFile = fopen( "index.html", "w"); 
  int        i; 

  fprintf( ptrFile, "<HTML>\n "); 
  fprintf( ptrFile, "<HEAD> <TITLE> The Geek Stuff </TITLE> </HEAD>\n" ); 
  fprintf( ptrFile, "<BODY BGCOLOR=\"#110022\" TEXT=\"#FFBBAA\"> \n"); 
  fprintf( ptrFile, "<p>Example 1: This file was created from a C program</p>\n"); 
 
  for( i = 0; i< 5; i++) 
  { 
    fprintf( ptrFile, "<p>%d. line</p>\n", i); 
  } 

  fprintf( ptrFile, "</BODY>\n"); 
  fprintf( ptrFile, "</HTML>"); 
  fclose( ptrFile ); 
  
  return EXIT_SUCCESS; 
}

在上面, fopen 函数有两个参数。 首先,文件的名称,在本例中为 index.html。 其次,文件操作,在本例中为“w”,即“写入”以创建新文件。

该函数将返回一个 FILE 指针,该指针存储在变量 ptrFile 中。

使用 fprintf 函数,我们可以将内容写入我们刚刚创建的文件。 这个函数有两个参数。 首先,我们应该在其中写入内容的文件的 FILE 指针。 第二,应该写的内容。 这是一个字符串内容。 请注意,如果文件已经有一些现有内容, fprintf 将附加此内容。

最后,将内容写入文件后,使用 fclose 函数关闭 FILE 指针。

以下是上述c程序的输出。 首先编译 f1.c,它将创建 a.out 可执行文件。 执行 a.out,它将创建包含一些 HTML 内容的 index.html 文件,如下所示。

$ cc f1.c

$ ./a.out

$ cat index.html
<HTML>
 <HEAD> <TITLE> The Geek Stuff </TITLE> </HEAD>
<BODY BGCOLOR="#110022" TEXT="#FFBBAA"> 
<p>Example 1: This file was created from a C program</p>
<p>0. line</p>
<p>1. line</p>
<p>2. line</p>
<p>3. line</p>
<p>4. line</p>
</BODY>

示例二

这与前面的例子类似,但这里只是程序的内容不同。

我们在这里使用 rand 函数来确定要写入的总行数。

我们还将使用 rand 函数通过随机计算一行中应该使用多少个空格和开头来创建一个星号模式。

使用以下示例代码创建 f2.c 程序。

f2.c

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h>

void printBlanks(  int,      FILE* ); 
void printStars (  int, int, FILE* ); 

int main( void ) 
{ 
  FILE      *ptrFile = fopen( "index.html", "w"); 

  int       iNumberOfLines, iNumberOfBlanks, iNumberOfStars; 
  int       iCounter =  1; 
  int       iColor   = -1; 

  iNumberOfLines = iNumberOfBlanks = iNumberOfStars = 0; 

  fprintf( ptrFile, "<HTML>\n "); 
  fprintf( ptrFile, "<HEAD> <TITLE>Example 2</TITLE> </HEAD>\n" );               
  fprintf( ptrFile, "<BODY BGCOLOR=\"#FFFFFF\" > \n");
  fprintf( ptrFile, "<p>Example 2: This file was created from a C program</p>\n");
 
  srand( ( unsigned) time ( NULL ) ); 
  iNumberOfLines = (rand() % 20) + 10; 

  do{ 
    iNumberOfBlanks = ( rand() % 10 ); 
    iNumberOfStars  = ( rand() % 30 ); 
    iColor          = ( rand() % 4  ); 
       
    printBlanks( iNumberOfBlanks, ptrFile ); 
    printStars(  iNumberOfStars, iColor, ptrFile  ); 
       
    iCounter++; 
  } while ( iCounter <= iNumberOfLines ); 

  fprintf( ptrFile, "</BODY>\n"); 
  fprintf( ptrFile, "</HTML>"); 
  fclose( ptrFile ); 
  
  return EXIT_SUCCESS; 
} 

void printBlanks( int   iNumberOfBlanks,  
                  FILE* ptrFile ) 
{ 
  int i; 
  fprintf( ptrFile," <p> " ); 
  for( i = 0; i < iNumberOfBlanks; i++ ) 
  fprintf( ptrFile, " "); 
} 
       
void printStars(  int   iNumberOfStars, 
                  int   iColor, 
                  FILE* ptrFile  ) 
{ 
  int i; 
  switch ( iColor ) 
  { 
    case 0: fprintf( ptrFile,"<font color=\"FF0000\">"); break; 
    case 1: fprintf( ptrFile,"<font color=\"00FF00\">"); break; 
    case 2: fprintf( ptrFile,"<font color=\"0000FF\">"); break; 
    case 3: fprintf( ptrFile,"<font color=\"FFFF00\">"); break; 
  } 
  for( i = 0; i < iNumberOfStars; i++ ) 
    fprintf( ptrFile, "*"); 
     
  fprintf( ptrFile," </font></p>"); 
}

以下是上述程序的部分输出。

$ cc f2.c

$ ./a.out

$ cat index.html 
<HTML>
 <HEAD> <TITLE>Example 2</TITLE> </HEAD>
<BODY BGCOLOR="#FFFFFF" > 
<p>Example 2: This file was created from a C program</p>
...

在上面的例子中,我们在每一行的前面添加了几个空格。 我们还添加了一些颜色字符。 字符的颜色是四种基本颜色之一:蓝色、绿色、黄色或红色。 这种模式重复了几次。 我们正在使用 nbsp 标签来创建空白空间。

示例三

在如何从 C 创建新文件方面,这也类似于前面的示例。

但是,这也需要两个现有文件(original.txt 和 compare.txt),打开它们并进行比较。

然后,这将突出显示输出 html 文件中的差异。

使用以下示例代码创建 f3.c 程序。

f3.c

#include <stdio.h> 
#include <stdlib.h> 

#define EOLN '\n' 

int main( void ) 
{ 
  FILE      *ptrFile           = fopen( "index.html" , "w" ); 
  FILE      *ptrFileOriginal   = fopen( "original.txt"  , "r" ); 
  FILE      *ptrFileCompared   = fopen( "compared.txt" , "r" ); 

  char       cOriginal, cCompared; 
  char       cColor     = 'b'; 

  fprintf( ptrFile, "<HTML>\n "); 
  fprintf( ptrFile, "<HEAD> <TITLE>Example 3: This file was created from a C program</TITLE> </HEAD>\n" ); 
  fprintf( ptrFile, "<BODY TEXT =\"#FFFFFF\" BGCOLOR=\"#000000\" > \n"); 
  fprintf( ptrFile, "<p> <center>COMPARING TWO SAME SIZE FILES</center></p>\n"); 
  fprintf( ptrFile, "<p> \n"); 

  while( (cOriginal = fgetc( ptrFileOriginal ) ) != EOF ) 
  { 
    cCompared = fgetc( ptrFileCompared ); 

    if( ( cOriginal == cCompared ) && ( cColor == 'r' ) ) 
    { 
      fprintf( ptrFile, "</FONT>"); 
      fprintf( ptrFile, "<FONT COLOR=\"00FF00\">"); 
      cColor = 'g'; 
    } 
    else if( ( cOriginal != cCompared ) && ( cColor == 'g' ) ) 
    { 
      fprintf( ptrFile, "</FONT>"); 
      fprintf( ptrFile, "<FONT COLOR=\"FF0000\">"); 
      cColor = 'r'; 
    } 
            
    if( cColor == 'b' ) 
    { 
      if( cOriginal == cCompared) 
      { 
        cColor = 'g'; 
        fprintf( ptrFile, "<FONT COLOR=\"#00FF00\">"); 
                    
      } 
      else 
      { 
        cColor = 'r'; 
        fprintf( ptrFile, "<FONT COLOR=\"#FF0000\">"); 
      } 
      fputc( cOriginal, ptrFile ); 
      continue; 
    } 

    if( cOriginal == EOLN ) 
      fprintf( ptrFile, " <BR> "); 
    else 
      fputc( cOriginal, ptrFile ); 
        
  } 
    
  fprintf( ptrFile, "</FONT></p>" ); 
  fprintf( ptrFile, "</BODY>\n"); 
  fprintf( ptrFile, "</HTML>\n"); 

  fclose( ptrFile );
  fclose( ptrFileOriginal ); fclose( ptrFileCompared ); 
  
  return EXIT_SUCCESS; 
}

为此,我使用以下 original.txtcompare.txt 文件作为输入文件。 确保在执行 c 程序之前创建此示例文件。

$ cat original.txt 
line 1
line 2
line 3
$ 
$ 
$ cat compared.txt 
line 4
line 5
line 6

现在,编译并执行 f3.c 程序。 下面显示了上述代码的部分输出。

$ cc f3.c

$ ./a.out

$ cat index.html 
<HTML>
 <HEAD> <TITLE>Example 3: This file was created from a C program</TITLE> </HEAD>
<BODY TEXT ="#FFFFFF" BGCOLOR="#000000" > 
<p> <center>COMPARING TWO SAME SIZE FILES</center></p>
<p> 
<FONT COLOR="#00FF00">line </FONT><FONT COLOR="FF0000">1</FONT><FONT COLOR="00FF00"> <BR> line </FONT><FONT COLOR="FF0000">2</FONT><FONT COLOR="00FF00"> <BR> line </FONT><FONT COLOR="FF0000">3</FONT><FONT COLOR="00FF00"> <BR> </FONT></p></BODY>
</HTML>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

3 个 C 程序示例,用于创建包含数据的文件 的相关文章

  • 删除字符串 C 的第一个字符

    我试图删除字符串的第一个字符并保留其余部分 我当前的代码无法编译 我对如何修复它感到困惑 My code char newStr char charBuffer int len strlen charBuffer int i 1 char
  • 用 C# 启动 Windows 服务

    我想启动一个刚刚安装的Windows服务 ServiceBase ServicesToRun if bool Parse System Configuration ConfigurationManager AppSettings RunSe
  • gtest 和 gmock 有什么区别?

    我试图理解的目的google mock Google 的 C 模拟框架 https github com google googletest blob master googlemock README md 我已经与gtest较早 但我还是
  • 将指针转换为浮点数?

    我有一个unsigned char 通常 这指向一块数据 但在某些情况下 指针就是数据 即 铸造一个int的价值unsigned char 指针 unsigned char intData unsigned char myInteger 反
  • 使用静态类型代替变量

    当您的项目不使用命名空间时 有什么方法可以告诉编译器使用静态类型而不是变量吗 例如 我有一个名为 User 的类 它具有各种静态和非静态方法 假设调用了其中一个静态方法GetUser 我想称之为User GetUser 方法来自一个方法 该
  • 如何从 List 中的字符串中删除数字/数字?

    我有一个字符串列表 List
  • async wait 在调用异步方法时返回 Task> 而不是 List

    我正在尝试了解 async wait 的用法 并且研究了一些博客文章 现在我已经编写了一个测试代码 但它没有按照我期望的方式工作 我有一个返回列表的方法 private List
  • 如何在 C++ 中对静态缓冲区执行字符串格式化?

    我正在处理一段对性能要求非常高的代码 我需要执行一些格式化的字符串操作 但我试图避免内存分配 甚至是内部库的内存分配 在过去 我会做类似以下的事情 假设是 C 11 constexpr int BUFFER SIZE 200 char bu
  • 正则表达式删除某些字符周围不需要的空格

    我正在尝试从 JavaScript 文件中删除一些不需要的空格 并在将文件发送到客户端之前使用 C 和 Regex 组合文件 我有一个JavascriptHandler处理 js 文件 效果很好 这是我用来 打包 JavaScript 的函
  • 使用成员作为实现者来实现接口

    我有实现 IA 的 A 类 现在我需要创建也应该实现 IA 的类 B B 类有 A 类的实例作为成员 有什么方法可以定义A的实例实现B类中的IA吗 interfase IA void method1 void method2 void me
  • 如何防止字符串被截留

    我的理解 可能是错误的 是 在 C 中 当你创建一个字符串时 它会被实习到 实习生池 中 这保留了对字符串的引用 以便多个相同的字符串可以共享操作内存 但是 我正在处理很多很可能是唯一的字符串 一旦完成每个字符串 我需要将它们从操作内存中完
  • 为什么C++变量是指针时不需要正确定义?

    我对 C 语言完全陌生 特别是指针 经验主要是 PHP 并且希望对以下内容进行一些解释 我已经尝试寻找答案 这两行代码如何能够在我的程序中完成完全相同的工作 第二行似乎违背了我迄今为止所学到和理解的关于指针的一切 char disk 3 D
  • .Net Core 中的脚手架以及解决方案中的多个项目

    我创建了一个针对 net461 的 Net Core MVC6 应用程序 我使用了一个我非常熟悉的项目结构 其中我将数据 模型和服务类放置在单独的类库项目中 并且 Web 项目引用这些项目 当我尝试搭建控制器时 我收到一条错误 指出我正在搭
  • 无法将方法组“Read”转换为非委托类型“bool”

    我正在尝试使用SqlDataReader检查条目是否存在 如果存在则返回ID 否则返回false 当我尝试编译时 出现错误 无法将方法组 Read 转换为非委托类型 bool 我一直在遵循在 VB 中找到的示例 但似乎翻译可能不正确 pri
  • System.diagnostics.process 进程在托管后无法在 IIS 上运行?

    我正在尝试从网络应用程序安装 exe 当我在本地运行应用程序 从 asp 开发服务器 时 它安装正确 但当我托管在 IIS 上时 它不起作用 我在asp net页面的Page load方法上编写了这段代码 想要在客户端计算机上安装Test
  • Qt:将拖放委托给子级的最佳方式

    我在 QWidget 上使用拖放 我重新实现了 DragEnterEvent dragLeaveEvent dragMoveEvent 和 dropEvent 效果很好 在我的 QWidget 中 我有其他 QWidget 子级 我希望它们
  • 如何解释“错误C2018:未知字符'0x40'?[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 在编译一些代码时 我收到以下信息 错误 C2018 未知字符 0x40 我想知道如何解决这样的问题 这是我要开始的地方
  • C 中什么函数可以替换字符串中的子字符串?

    给定一个 char 字符串 我想查找所有出现的子字符串并将其替换为备用字符串 我没有看到任何简单的函数可以实现这一点
  • win32 API 和 .NET 框架之间的选择

    我必须开发一个适用于 Windows 的应用程序 该应用程序将能够通过网络摄像头识别手势来控制鼠标 我将使用 vc 2008 进行开发 但我很困惑是使用 NET 框架还是核心 win32 API 性能对于我的应用程序非常重要 根据 Ivor
  • C/C++ 通过 Android NDK 在 JNI 中看不到 Java 方法

    我正在尝试从使用 NDK 构建的 C 类文件调用 Java 方法 它不断抛出常见的 未找到非静态方法 错误并导致整个 Android 应用程序崩溃 下面的代码片段 有些东西可能不需要 但我按原样保留它们 因为焦点 问题在于refreshJN

随机推荐

  • 软件测试-网站测试

    按照以下六个顺序进行测试 1 黑盒测试 在测试网站时 首先应该建立状态表 第5章 把每个网页当作不同的状态 超级链接当作状态之间的连接线 完整的状态图有利于对整个任务更好地进行审视 查找具体网页缺陷的思路 文本 把网页文本当作文档对待 根据
  • 无线基本概述(二)

    1 一些参数 MAC MAC 即Medium MediaAccess Control 介质访问控制 是数据链路层的一部分 MAC地址是烧录在NetworkInterfaceCard 即网卡 简称NIC 里的 它也叫硬件地址 是由48位 即b
  • 队列的基本运算实现

    队列 queue 队列是一种先进先出 first in first out FIFO 的线性表 它只允许在表的一端 队尾 rear 插入元素 而在另一端 队头 front 删除元素 插入操作称为入队或进队 删除操作称为出队或离队 队列示意图
  • matlab读jpg有三个通道,图像为“灰度图像”

    最近用matlab读取 灰度图 jpg格式 居然有三个通道 且灰度值还不一样 那么这是为什么呢 1 灰度图 其实是 灰度图 概念的问题 并不是灰色的图片就是灰度图 正常来说灰度图是某个波段的成像 是由ccd对该波段对应波长的光线的强度感应形
  • 健康保健产品爬虫:Python爬虫获取保健品信息和用户评价

    目录 第一部分 选择目标网站 第二部分 分析网站结构和查询参数
  • 经纬恒润与辉羲智能达成战略投资与业务合作,加速产业智能化进程

    近日 经纬恒润战略投资辉羲智能 并与辉羲智能签署战略合作协议 双方将聚焦未来智慧出行 共同打造基于国产高性能SoC的自动驾驶量产解决方案 助力客户快速实现包括轻地图城市NOA在内的高阶自动驾驶功能量产落地 目前自动驾驶规模化处于全面爆发前夕
  • Nightingale滴滴夜莺监控系统入门(三)--页面功能说明

    Nightingale滴滴夜莺监控系统入门 三 功能模块 V3 4 1 用户资源中心 资产管理系统 任务执行中心 监控告警系统 监控看图 监控大盘 告警策略 部署客户端 生产环境开放服务端端口 部署客户端 这章节主要是介绍夜莺的功能使用 各
  • k8s的安装

    我这里使用vmware创建了三台虚拟机 k8s的虚拟机建议最少2核 4G内存 我的电脑配置不高采用的2核 3G的配置 安装k8s之前需要先安装docker docker的安装参考 docker的安装及使用 docker的安装和使用 骑士99
  • ubuntu16.4虚拟机开机,进入tty1命令终端,无法进入桌面问题始末

    现象 1 ubuntu虚拟机开机频繁出现error failed to start network manager 2 进入tty1 vm login 分析 1 回想到前一天编译工程 由于 lib i386 linux gnu下缺少libu
  • visual studio code导入自定义模块(pycharm中能够运行的文件,vs code报错:未找到指定模块)

    一 先看下目录结构 二 在main py中导入Utils中的模块 直接导入即可 from Utils custom event parse import CustomEventParse 三 在custom event parse py中导
  • [运维

    READS SQL DATA 是 MySQL 存储过程和函数中的一种权限修饰符 用于标识该存储过程或函数只读取数据库的数据而不修改它 这个修饰符通常用于声明存储过程或函数的权限 以告知数据库管理系统该过程或函数不会对数据库进行写操作 从而允
  • 动手学数据分析 Task5

    动手学数据分析 Task5 一 逻辑回归 二 随机森林 三 模型评估 3 1 k折交叉验证 3 2 混淆矩阵 3 3 ROC曲线 一 逻辑回归 LogisticRegression penalty l2 dual False tol 0 0
  • 如何将Zookeeper和Kafka的log4j升级到2.16

    1 删除lib下的jar文件 对于kafka lib 删除 slf4j api 1 7 25 jar slf4j log4j12 1 7 25 jar log4j 1 2 17 jar 对于zk lib 删除 log4j 1 2 17 ja
  • 毕业设计 - stm32单片机的远程WIFI密码锁 - 物联网 嵌入式

    文章目录 0 前言 1 简介 主要器件 实现效果 4 硬件设计 WIFI模块 OLED显示屏 相关原理图 硬件接线 5 软件说明 开发环境介绍 程序下载配置 设备初始化打印的信息 6 部分核心代码 7 最后 0 前言 这两年开始毕业设计和毕
  • kubernetes集群-Master节点升级-kubeadm,kubectl,kubelet升级

    kubernetes Master单节点升级 kubeadm 升级 kubelet 升级 kubectl 升级 生产环境注意事项 由于 kubeadm upgrade 不会升级 etcd 请确保已对其进行了备份 例如 您可以使用 etcdc
  • java setsession_Java Session.setServerAliveInterval方法代码示例

    import com jcraft jsch Session 导入方法依赖的package包 类 private Session startNewSession boolean acquireChannel throws JSchExcep
  • 华为od机试 Java【跳房子2】

    题目 有若干个连续的方格地板 儿童们喜欢在上面玩游戏 在这个游戏中 玩家需要在三个回合内 按照规定的步数 从第一格跳到最后一格 跳到最后的玩家有机会选择一个他们喜欢的房子 直到所有的房子都被选完 当然 游戏中最多房子的人是胜者 但游戏并不那
  • 快速浏览Swift-笔记

    快速浏览Swift 笔记 快速浏览Swift https docs swift org swift book GuidedTour GuidedTour html 变量也常量 多行字符串 使用 let quotation I said I
  • python文件工程化,隐藏源码

    python文件工程化 隐藏源码 py文件转换为pyc文件 全文来自博客https www cnblogs com HByang p 13223118 html pyc介绍 pyc是一种二进制文件 是由py文件经过编译后 生成的文件 是一种
  • 3 个 C 程序示例,用于创建包含数据的文件

    本教程介绍如何使用 C 程序创建文件 在这些示例中 我们将创建新的 HTML 文件并向其中写入一些内容 文件的内容会有所不同 但这三个 C 示例程序应该向大家说明如何使用 fopen fprintf 等 c 文件函数来创建和操作文件 示例一