zoukankan      html  css  js  c++  java
  • C语言的文件读写操作函数小结


    一.文件打开

      使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 FILE 的一个对象,类型 FILE包含了所有用来控制流的必要的信息。函数原型为:

    FILE *fopen( const char * filename, const char * mode );

      函数原型中的第一个参数为文件名,第二参数为打开模式。模式可以有r(允许读取),w(允许写入),a(允许追加)等。文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。现在为了安全考虑,很多编译器都建议使用fopen_s()函数代替fopen()函数。函数原型为:

    errno_t fopen_s( FILE** pFile, const char *filename, const char *mode );

    代码示例

    #include <stdio.h>
    
    int main()
    {
        FILE *stream_1,*stream_2;
    
        stream_1 = fopen("C:\Users\greenhat\Desktop\文档\test1.txt", "r+");
    
        errno_t err = fopen_s(&stream_2,"C:\Users\greenhat\Desktop\文档\test2.txt", "r+");
    
        return 0;
    }

      上述运行后会在C:\Users\greenhat\Desktop\文档\目录下产生test1.tex和test2.txt两个文件,"r+"表示该文件允许读写操作。

     

    二.文件关闭

      使用fclose()函数关闭文件,如果成功关闭文件,fclose()函数返回为零,如果关闭文件时发生错误,函数返回 EOF函数原型为:

    int fclose( FILE *fp );

    三.文件写入

      函数 fputc() 把参数 c 的字符值写入到 fp 所指向的输出流中。如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF。函数原型为:

    int fputc( int c, FILE *fp );

      函数 fputs() 把字符串 s 写入到 fp 所指向的输出流中。如果写入成功,它会返回一个非负值,如果发生错误,则会返回 EOF。数原型为:

    int fputs( const char *s, FILE *fp );

      函数fprintf()把一个字符串写入到文件中,根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.。 fprintf()的返回值是输出的字符数,发生错误时返回一个负值。函数原型为:

    int fprintf( FILE *stream, const char *format, ... );

    代码示例

    #include <stdio.h>
    
    int main()
    {
        FILE *stream;
        errno_t err = fopen_s(&stream,"C:\Users\greenhat\Desktop\文档\test.txt", "w+");
        fprintf(stream, "测试函数fprintf输出... 
    ");
        fputs("测试函数fputs输出... 
    ", stream);
        fclose(stream);
    
        return 0;
    }

    打开文件test.txt可以看到以下结果:

    测试函数fprintf输出... 
    测试函数fputs输出... 


    四.文件读取

      函数fgetc() 从 fp 所指向的输入文件中读取一个字符。返回值是读取的字符,如果发生错误则返回 EOF。函数原型为:

    int fgetc( FILE * fp );

      函数 fgets() 从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区,并在最后追加一个NULL字符来终止字符串。如果这个函数在读取最后一个字符之前就遇到一个换行符 ' ' 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符。函数原型为

    char *fgets( char *buf, int n, FILE *fp );

       函数fscanf()从一个流中执行格式化输入,成功返回读入的参数的个数,失败返回EOF(-1)。fscanf()遇到空格和换行时结束,注意空格时也结束。这与fgets()有区别,fgets(0)遇到空格不结束。函数原型为:

    int fscanf(FILE*stream,constchar*format,[argument...]);
    

      为安全期间,现在一般用fscanf_s()函数代替fscanf函数。
    代码示例

    #include <stdio.h>
    
    int main()
    {
        FILE *fp;
        char buff[255];
    
    
        errno_t err = fopen_s(&fp, "C:\Users\greenhat\Desktop\文档\test.txt", "r");
        fscanf_s(fp, "%s", buff,255);
        printf("1 : %s
    ", buff);
    
        fgets(buff, 255, (FILE*)fp);
        printf("2: %s
    ", buff);
    
        fgets(buff, 255, (FILE*)fp);
        printf("3: %s
    ", buff);
        fclose(fp);
    
    }

     当原来文件中存储的内容如下

    Hello world!
    How are you!

    运行完上述代码后,结果如下

       从运行结果可以看出,函数fprintf()读取遇到空格时读取结束,然后fgets()函数继续读取,直到遇到回车符。最后一个fgets()函数从第二行开始读取到末尾。

  • 相关阅读:
    广告小程序后端开发(8.发布免费广告或店铺,以及上传图片)
    广告小程序后端开发(7.获取价格表数据)
    广告小程序后端开发(6.获取类别逻辑)
    广告小程序后端开发(5.安装配置django-rest-framework,编写后台登录逻辑)
    广告小程序后端开发(4.导入地区数据,修改adminx,修改models,手动添加模拟数据)
    广告小程序后端开发(3.xadmin的引入)
    广告小程序后端开发(2.Models设计)
    使用django执行数据更新命令时报错:django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency users.00 01_initial on database 'default'.
    广告小程序后端开发(1.新建项目、连接数据库)
    pycharm的Database连接新的Mysql5.7报错[08001]
  • 原文地址:https://www.cnblogs.com/maluning/p/7955750.html
Copyright © 2011-2022 走看看