• 文件操作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]
  • 相关阅读:
    AS报错
    第二章课下测试补交博客
    第七章课下测试总结
    2017-2018-1 20155235 20155211 实验四 外设驱动程序设计
    2017-2018-1 20155235 《信息安全系统设计基础》第十一周学习总结
    pwd命令的实现
    2017-2018-1 20155235 实验三 实时系统 实验内容
    2017-2018-1 20155235 《信息安全系统设计基础》第九周学习总结
    20155219 20155224 20155235 信息安全技术概论 第三次实验报告
    2017-2018-1 20155235 《信息安全系统设计基础》第八周学习总结
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3846070.html
Copyright © 2020-2023  润新知