文件操作02 零基础入门学习C语言61

第十一章:文件操作01

 

让编程改变世界

Change the world by program


 

文件的关闭(fclose函数)

 

函数调用:

fclose(文件指针);

函数功能:

使文件指针变量不指向该文件,也就是文件指针变量与文件“脱钩”,此后不能再通过该指针对原来与其相联系的文件进行读写操作。

返回值:

关闭成功返回值为0;否则返回EOF(-1)  

文件的读写

对文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数: 字符读写函数: fgetc 和 fputc 字符串读写函数: fgets 和 fputs 数据块读写函数: freed 和 fwrite 格式化读写函数: fscanf 和 fprinf 下面分别予以介绍。使用以上函数都要求包含头文件stdio.h。  

fputc 和 fgetc

 

fputc()函数调用:

fputc ( ch,fp ) ;

函数功能:

将字符(ch的值)输出到 fp 所指向的文件中去。  

对于fputc函数的使用要说明几点

用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。 如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。 [codesyntax lang="c"]
#include <stdio.h>
#include <stdlib.h>

void main()
{
      FILE *fp;
      char ch, filename[20];

      printf("Please input the filename you want to write: ");
      scanf("%s", filename);

      if( !(fp = fopen(filename, "wt+")))
      {
            printf("Cannot open the file!n");
            exit(0);   // 终止程序
      }

      printf("Please input the sentences you want to write: ");
      // ch = getchar();  // 请思考……
      ch = getchar();
      while( ch != EOF )   // ctrl + z
      {
            fputc(ch, fp);
            ch = getchar();
      }

      fclose(fp);
}
[/codesyntax] 每写入一个字符,文件内部位置指针向后移动一个字节。 fputc函数有一个返回值,如写入成功则返回写入的字符,否则返回一个EOF。可用此来判断写入是否成功。  

fgetc()函数调用:

ch = fgetc(fp);

函数功能:

其意义是从打开的文件 fp 中读取一个字符并送入 ch 中。  

对于fgetc函数的使用要说明几点

在fgetc函数调用中,读取的文件必须是以读或读写方式打开的。 在文件内部有一个位置指针。用来指向文件的当前读写字节。 在文件打开时,该指针总是指向文件的第一个字节。使用fgetc 函数后,该位置指针将向后移动一个字节。因此可连续多次使用fgetc函数,读取多个字符。   应注意文件指针和文件内部的位置指针不是一回事。 文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。 文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。 [codesyntax lang="c"]
#include <stdio.h>
#include <stdlib.h>

void main()
{
      FILE *fp;
      char ch, filename[20];

      printf("Please input the filename you want to write: ");
      scanf("%s", filename);

      if( !(fp = fopen(filename, "r")))
      {
            printf("Cannot open the file!n");
            exit(0);   // 终止程序
      }

      while( ch != EOF )   // ctrl + z
      {
            ch = fgetc(fp);
            putchar(ch);
      }

      fclose(fp);
}
[/codesyntax]  

知识补充

从一个文本文件顺序读入字符并在屏幕上显示出来:

[codesyntax lang="c"]
ch = fgetc(fp);
while( ch != EOF )
{
    putchar(ch);
    ch = fgetc(fp);
}
[/codesyntax] 注意:EOF不是可输出字符,因此不能在屏幕上显示。由于字符的ASCII码不可能出现 -1,因此EOF定义为-1是合适的。 当读入的字符值等于-1 时,表示读入的已不是正常的字符而是文件结束符。  

从一个二进制文件顺序读入字符:

[codesyntax lang="c"]
while( !foef(fp) )
{
    ch = fgetc(fp);
}
[/codesyntax] 注意:ANSI C提供一个feof()函数来判断文件是否真的结束。如果是文件结束,函数feof(fp)的值为1(真);否则为0(假)。以上也适用于文本文件的读取。  

理论要付诸于实践

 

作业:图片、文件合成器!

由波多野结衣姐姐的故事说起~ 图片文件合成器.c (下载源代码)   [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LLKNIXTQAUDZ']视频下载[/Downlink]
原文地址:https://www.cnblogs.com/LoveFishC/p/3846070.html