≡菜单

3 C程序示例,使用数据创建文件

本教程说明了如何从C程序创建文件。

在这些示例中,我们’ll create new HTML files and 写 some content to it.

文件的内容将有所不同,但是这三个C示例程序应向您说明如何使用c文件功能(如fopen,fprintf等)来创建和操作文件。

例子1– Create a File

这是第一个示例,它将创建一个名为index.html的新文件,并带有一些HTML内容。

使用以下示例代码创建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> 极客的东西</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”, which is “write” to create new file.

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

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

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

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

# cc f1.c

# ./a.out

# cat index.html
<HTML>
 <HEAD> <TITLE> 极客的东西</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>

有关所有单个功能的更多详细信息,请参阅我们对此主题的较早文章: C语言中的文件处理示例(fopen,fread,fwrite,fseek)

例子2– Create a File

这与前面的示例相似,但是在这里只有程序的内容不同。

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

We’ll还可以使用rand函数通过随机计算一行中应使用多少空格和开头来创建星形字符模式。

使用以下示例代码创建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标记创建空白。

例子3– Create a File

就如何从C创建新文件而言,这也与先前的示例相似。

但是,这还将占用两个现有文件(original.txt和compared.txt),将它们打开并进行比较。

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

使用以下示例代码创建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.txt和compare.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>

如果您喜欢这篇文章,您可能还会喜欢..

  1. 50个Linux Sysadmin教程
  2. 50个最常用的Linux命令(包括示例)
  3. 排名前25位的最佳Linux性能监视和调试工具
  4. 妈妈,我找到了! – 15个实用的Linux Find命令示例
  5. Linux 101 Hacks第二版电子书 Linux 101黑客手册

Bash 101 Hacks书 Sed和Awk 101黑客手册 Nagios Core 3书 Vim 101黑客手册

{ 1 评论… 加一 }

  • 杜斯科科西卡 2017年6月29日,上午2:51

    为了查看创建的文件,…尝试使用一些程序打开文件… I hope that I don’无需过多谈论它…

    换句话说,cat将显示创建的文件,但是某些浏览器将能够显示该文件…

    您还可以使用Linux随附的gcc,…

发表评论