精华内容
下载资源
问答
  • C++ 文件读写相关函数

    千次阅读 2019-03-13 14:19:49
    几个C/C++语言文件读写函数 1、打开和关闭文件  (1)打开文件:FILE * fopen(const char *filename, const char *mode)  使用打开文件函数时,我们要提供一个要打开的文件名,这里要提供一个当前用户有...

                        几个C/C++语言文件读写函数

    1、打开和关闭文件

      (1)打开文件:FILE * fopen(const char *filename, const char *mode

      在使用打开文件函数时,我们要提供一个要打开的文件名,这里要提供一个当前用户有权限进行相应mode操作的文件,且应该提供相对应的文件路径(默认路径为当前文件夹)。打开方式mode有很多种,大概有如下几种模式(参考自百度百科的参数介绍,因为我暂时看的这本书没有详细参数介绍,只给出了几种,连接:http://baike.baidu.com/link?url=ZOtXcWvvy4pfUVm37V9GaHymKEKZKxIxMjeTcxSlTxKMcEmx1ZW_MiTH1myZUcG_):

      r:以只读方式打开文件,采用文本模式,文件必须存在;

      rb:以只读方式打开文件,采用二进制模式,文件必须存在;

      r+:以可读写方式打开文件,采用文本格式,文件必须存在;

      r+b:以可读写方式打开文件,采用二进制模式,文件必须存在;(codeblcoks环境使用GCC编译器验证,原百度百科未说明)

      w:以只写方式打开文件,采用文本模式,若文件存在则文件清零,若文件不存在则创立该文件;

      wb:以只写方式打开文件,采用二进制模式,同上;

      w+:以读写方式打开文件,若文件存在则长度清零,若文件不存在则建立该文件。

      w+b:以读写方式打开二进制文件,同上;

      a:以附加方式打开文本文件,只可写,若文件不存在则会创建文件;若文件存在,则会将新内容添加到文件末尾,原文件中内容保留;

      ab:以附加方式打开二进制文件,同上;

      a+:以附加方式打开可读写文本文件,同上;

      a+b:以附加方式打开可读写二进制文件,同上;

      rw+:以读写方式打开一个文本文件;

      其中,r+的读写方式都在文件开头,写入操作会覆盖之前的内容,而w+在文件存在时会创建新文件覆盖之,再写入内容,二a+是从文件末尾开始添加内容。

      (2)关闭文件:int fclose (FILE* stream)

      每个文件打开后都要注意在程序执行的所有可能路径上关闭该文件,因为一个程序所能打开的文件数目是有限的,这点要注意!

    2、fscanf和fprintf读写文件

      函数原型如下:

      int fscanf (FILE *stream, const char *format[, address, ...]);

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

      两个函数的用法类似C/C++中的scanf和printf,只不过所面向的流对象为文件流,同时,fscanf在读到文件末尾时会返回EOF(End of file),是一个stdio.h中的内置常量。

    3、fgetc和fputc读写文件

      函数原型如下:

      int fgetc(FILE *stream);

      int fputc(int c, FILE *stream);

      使用fgetc读取为文件内容,每次仅读取一个字节的文件,当读到文件末尾时,会返回EOF值;

      fputc会将一个字节的数据写入文件,c是要写入的数据,虽然是int型,但是只有低8位会被写入文件,写入失败会返回EOF值。

    4、fgets和fputs读写文件

      函数原型如下:

      char *fgets (char *s,  int n, FILE *stream);

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

      fgets每运行一次,会读取一行数据,包括换行符,放入s中,并加上相应的结尾标志符‘\0’,参数n代表s中最多容纳的字符数(不算‘\0’);而返回的指针和s指向同一内存区域,如果没有数据可以读取,则返回NULL;

      fputs函数向文件流中写入字符串s,但写完s后并不会自动向文件中写入换行符。

    5、fread和fwrite读写文件

      函数原型如下:

      unsigned fread (void *ptr, unsigned size, unsigned n, FILE *stream);

      unsigned fwrite (const void *ptr, unsigned size, unsigned n, FILE *stream);

      fread 函数从文件中读取n个大小为size字节的数据块,放入ptr开始的内存中,返回值为读取的字节数,若一个字节也未读取,返回值为0;

      fwrite函数将从地址ptr开始的n*size个字节的内容写入到文件中,返回值表示成功写入的字节数。

      需要注意的一点就是,fread和fwrite函数读写文件,文件必须用二进制方式打开。

    6、fseek改变文件当前位置

      函数原型如下:

      int fseek (FILE *stream, long offset, int whence);

      作用:函数将与stream关联的文件的“当前位置”设为距whence处offset字节的地方。whence可以有一下三种取值:

      SEEK_SET:文件开头;

      SEEK_CUR:执行本函数前文件的当前位置;

      SEEK_END:文件末尾;

      例如:

      fseek(fp, 200, SEEK_SET);// 将文件当前位置设为距离文件开始位置为200个字节处

      程序示例:

      fread (aStu, sizeof (Student), 7, fpSrc);  // 读取7*sizeof(Student)字节大小数据

      fseek (fpSrc, sizeof (Student) * 20, SEEK_SET);  // 将文件当前位置设为距离开始位置为sizeof(Student)*20个字节处

    展开全文
  • Matlab文件读写函数

    千次阅读 2012-11-29 21:15:32
    Matlab提供多种能够进行文件读写函数,这些函数是Matlab语言的一部分,并不需要任何额外的工具箱的支持。 文本文件 Matlab中对文件的读写函数可以分为2大类:高级函数和低级函数。简单的说,高级函数的调用...

    Matlab提供多种能够进行文件读写的函数,这些函数是Matlab语言的一部分,并不需要任何额外的工具箱的支持。

    文本文件

    Matlab中对文件的读写函数可以分为2大类:高级函数低级函数。简单的说,高级函数的调用语法简单,方便使用;但是可定制性差,只适用某些特殊格式的文件类型,缺乏灵活性。

    在实际的使用中,很多人会推荐这样的一种选择原则:在读取文件时,尽量使用高级函数;在存写文件时尽量使用低级函数,因为高级函数存写文件时,文件的格式比较单一。

    高级命令

    常用的文本文件读写的高级函数包括以下8个:

    (1) 读:load

    load是Matlab中的一个内置函数。其主要功能是从文本文件或者MAT文件中把数据输入Matlab工作空间。

    如果各行的列数不相等,会出错。

    load的调用方式可以分为2种:

    命令形式:

    load bar.dat

    函数形式:

    [x] = load('bar.dat');

    (2) 读:importdata

    适合从文本文件或者特殊格式的二进制文件(比如.WAV等)中读取数据。importdata可以读取包含文字说明的文件,可以使用用户自定义的字符作为文件中每行各数据之间的分隔符,如不指定,自动以空格作为分隔符。如果各行的列数不同的话,importdata不会终止执行,而是会根据第一行的列数为准来决定输出矩阵的大小,所缺的列会以NaN代替。

    (3) 读:csvread

    用来读取用逗号隔开的数据文件。

    (4) 读:strread

    (5) 读:dlmread

    文件中不能包含说明文字。不过dlmread不但可以读取以逗号分割的数据文件,也可以读取那些用其它字符分割数据的文件。

    (6) 读:textread

    通过调用一个名为dataread.dll的MEX文件实现的。比前面提到的几个文件读取高级函数,textread同样具有调用语法简单的优点,同时对文件读取的可定制性更强。textread既能处理有固定格式的文件,也能处理无格式的文件,还能对文件每行的数据按列逐个读取。通常被用来处理一些已知格式的文件。{姓名,等级,X,Y,答案}

    Note: textread will be removed in a future version. Use 'textscan' instead. (Matlab 2011a)

    (7) 写:save

    save也是Matlab的一个内置函数,用来把当前Matlab工作空间的一个或者多个变量存入外部文件。在默认情况下,save命令以MAT格式存写数据,但也可以指定存写的文本方式。

    注意:save无法在文本文件中,保存复数变量。如果有复数时,save只保存它们的实部。另外,对于结构型变量,save只能保存结构型标量,而不能保存结构型变量数组。

    '-mat'             Binary MAT-file format (default).

    '-ascii'            8-digit ASCII format.

    '-ascii', '-tabs'                     Tab-delimited 8-digit ASCII format.

    '-ascii', '-double'                  16-digit ASCII format.

    '-ascii', '-double', '-tabs'        Tab-delimited 16-digit ASCII format.

    For more flexibility in creating ASCII files, use 'dlmwrite' or 'fprintf'. (Matlab 2011a)

    (8) 写:dlmwrite

    Write matrix to ASCII-delimited file


    低级命令

    这些命令和C语言里对文件的读写函数非常类似。操作过程一般包括:打开文件;读写文件;关闭文件。

    常用的文件读写低级命令有如下7个:

    (1) fopen

    fopen能够打开文件,也能够从打开的文件中获得信息。默认情况下,fopen以二进制格式打开文件。

    注意:如果文件打开模式里用“+”,如“a+t”、“w+t”等,对文件的读和写必须用fseek或者frewind隔开。

    (2) fclose

    文件打开、使用后最好关闭,以方便对该文件的其他操作。使用fopen打开文件以后,系统会把这个文件标记为"正在使用";使用fclose会清除这个标记,否则会影响到对文件的修改、删除等操作。

    (3) fgetl

    能够读取指定文件中的一行内容,但不包括新行分隔符。用fopen打开文件后,文件的读取位置是文件开头的地方,以后每次调用fgetl,这个读取位置会自动更新到下一行,一直到文件结尾的地方。

    (4) fgets

    fgets的功能和fgetl类似,都是读取当前文件读取位置所对应的下一行内容。区别在于,fgets将包含该行的新行标志。

    (5) fscanf

    fscanf具有更多的灵活性,能够读取有格式的文本文件。

    注意:用%s读取字符串后,其中的每个字符会被看成是返回的矩阵里的一个元素。而且,%s会忽略文件中的空格键。如果需要读取空格,则必须用%c。

    (6) textscan

    textscan是Matlab 7.0新增加的内置函数。它能够更为高效和灵活地读取文本文件数据,其和高级命令textread相似,但textcan能够更好地处理大型文件。textscan能从文件的任何地方开始读取数据,对于数据的转换,textscan提供了更多的选项。

    注意:textscan读取数据最大值uint32(4294967295),文件中相应的数字如果大于这个数,则被这个极限数字代替。

    (7) fprintf

    fprintf能够以类似于ANSI C语言中的有关函数那样按照用户指定的格式把数据打印文本信息。根据调用参数的不同,fprintf可以在文件或者屏幕上输出结果。

    Write data to text file

    展开全文
  • Linux下文件读写函数的使用总结读、写、追加方式modefopen()函数用法char *fgets(str,n,fp)int fputs(const char *s, FILE *stream);fclose()函数1. 文件的顺序写函数文件的顺序读操作函数文件的随机读写函数 读、...


    注:本文对原文进行了一定的总结,文末已经申明了原文链接。

    读、写、追加方式mode

    r: 读打开, 不创建

    w: 写打开,创建/清空

    a: 写打开, 创建/追加


    r+: 读/写打开,不创建

    w+:读/写打开,创建/清空

    a+:读/写打开, 创建/追加

    衍生:

    rb,rb+,wb,wb+,ab,ab+; 对二进制操作

    rt,rt+,wt,wt+,at,at+; 对文本文件操作

    fopen()函数用法

    #include<stdio.h>
    #include<stdlib.h>
    
    void main()
    {
    FILE *fp;
    char str[16];
    if((fp=fopen("out.dat","rt"))==NULL)
    {
    printf("Cannot open file strike any key exit!");
    exit(1);
    }
    fgets(str,16,fp);
    printf("%s",str);
    fclose(fp);
    }
    

    char *fgets(str,n,fp)

    读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志”。
    例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入 字符数组str中。

    对fgets函数有两点说明:

    1. 在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。

    2. fgets函数也有返回值,其返回值是字符数组的首地址。
      实例代码如下:

    #include<stdio.h>
    #include<stdlib.h>
    
    void main()
    {
    char *p;//创建一个字符指针接收fgets()返回值
    FILE *fp;
    char str[16];
    if((fp=fopen("out.dat","rt"))==NULL)//以读文本文件方式打开文件out.dat
    {
    printf("Cannot open file strike any key exit!");
    exit(1);
    }
    p = fgets(str,16,fp);
    printf("p:address=%p\n",p);
    printf("p:=%s\n",p);
    printf("%s",str);
    fclose(fp);
    }
    
    

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

    int fputs(const char *s, FILE *stream);
    int puts(const char *s);
    返回值:成功返回一个非负整数,出错返回EOF
    写字符串函数fputs向指定的文件写入一个字符串,puts向标准输出写入一个字符串。
    fputs函数的功能是向指定的文件写入一个字符串,其调用形式为: fputs(字符串,文件指针) 其中字符串可以是字符串常量,也可以是字符数组名, 或指针 变量,例如:
    fputs(“abcd“,fp);
    其意义是把字符串“abcd”写入fp所指的文件之中。
    实例代码如下:

    #include<stdlib.h>
    #include<stdio.h>
    main()
    {
    FILE *fp;
    char ch,st[20];
    if((fp=fopen("string","at+"))==NULL)
    {
    printf("Cannot open file strike any key exit!");
    //getch();
    exit(1);
    }
    printf("input a string:");
    scanf("%s",st);
    fputs(st,fp);
    rewind(fp);
    ch=fgetc(fp);
    while(ch!=EOF)
    {
    putchar(ch);//打印一个字符
    ch=fgetc(fp);/fgetc()函数的功能是从文件指针指定的文件中读入一个字符
    }
    fclose(fp);
    } 
    
    

    fclose()函数

    fclose()函数用来关闭一个由fopen()函数打开的文件 , 其调用格式为:
    int fclose(FILE *stream);
    该函数返回一个整型数。当文件关闭成功时, 返回0, 否则返回一个非零值。可以根据函数的返回值判断文件是否关闭成功。

    1. 文件的顺序写函数

    fprintf()、fputs()和fputc()函数
    函数fprintf()、fputs()和fputc()均为文件的顺序写操作函数, 其调用格式如下:
    int fprintf(FILE *stream, char *format, );
    int fputs(char *string, FILE *steam);
    int fputc(int ch, FILE *steam);

    一个实例囊括以上函数:

     #include<stdio.h>
         main()
         {
              char *s="That's good news"; /*定义字符串指针并初始化*/
              int i=618;                    /*定义整型变量并初始化*/
              FILE *fp;                     /*定义文件指针*/
              fp=fopen("example.dat", "w");    /*建立一个文字文件只写*/
              fputs("Hello  world", fp);/*向所建文件写入一串字符*/
              fputc(':', fp);               /*向所建文件写冒号:*/
              fprintf(fp, "%d\n", i);       /*向所建文件写一整型数*/
              fprintf(fp, "%s", s);         /*向所建文件写一字符串*/
              fclose(fp);                   /*关闭文件*/
         }
    
    

    结果如下:
    在这里插入图片描述

    文件的顺序读操作函数

    fscanf()、fgets()和fgetc()函数
    函数fscanf()、fgets()和fgetc()均为文件的顺序读操作函数, 其调用格式如下:
    int fscanf(FILE *stream, char *format, );
    char fgets(char *string, int n, FILE *steam);
    int fgetc(FILE *steam);
    fscanf()函数的用法与scanf()函数相似, 只是它是从文件中读到信息。 fscanf()函数的返回值为EOF(即-1), 表明读错误, 否则读数据成功。fgets()函数从文件中读取至多n-1个字符(n用来指定字符数), 并把它们放入string指向的字符串中, 在读入之后自动向字符串未尾加一个空字符, 读成功返回string指针, 失败返回一个空指针。fgetc()函数返回文件当前位置的一个字符, 读错误时返回EOF。
    实践代码如下:

      #include<stdio.h>
         main()
         {
              char *s, m[20];
              int i = 2020;
              FILE  *fp;
              fp=fopen("example.dat", "r");    /*打开文字文件只读*/
              fgets(s, 24, fp);             /*从文件中读取23个字符*/
              printf("%s", s);              /*输出所读的字符串*/
              fscanf(fp, "%d", &i);         /*读取整型数*/
              printf("%d", i);              /*输出所读整型数*/
              putchar(fgetc(fp));           /*读取一个字符同时输出*/
              fgets(m, 17, fp);             /*读取16个字符*/
              puts(m);                      /*输出所读字符串*/
              fclose(fp);                   /*关闭文件*/
             
         }
    
    

    结果如下:
    在这里插入图片描述

    文件的随机读写函数

    有时用户想直接读取文件中间某处的信息, 若用文件的顺序读写必须从文件头开始直到要求的文件位置再读, 这显然不方便。Turbo C2.0提供了一组文件的随机读写函数, 即可以将文件位置指针定位在所要求读写的地方直接读写。
    文件的随机读写函数如下:
    int fseek (FILE *stream, long offset, int fromwhere);
    int fread(void *buf, int size, int count, FILE *stream);
    int fwrite(void *buf, int size, int count, FILE *stream);
    long ftell(FILE *stream);
    fseek()函数的作用是将文件的位置指针设置到从fromwhere开始的第offset 字节的位置上, 其中fromwhere是下列几个宏定义之一:
    文件位置指针起始计算位置fromwhere

    符号常数数值含义
    SEEK_SET0 从文件开头
    SEEK_CUR1从文件指针的现行位置
    SEEK_END2从文件末尾

    offset是指文件位置指针从指定开始位置(fromwhere指出的位置)跳过的字节数。它是一个长整型量, 以支持大于64K字节的文件。fseek()函数一般用于对二进制文件进行操作。
    当fseek()函数返回0时表明操作成功, 返回非0表示失败。

     #include<stdlib.h>
     #include<stdio.h>
         main()
         {
    	  char ch;
              FILE *fp;
              if((fp=fopen("example.dat", "r"))==NULL)
                {
                  printf("Can't open file");
                  exit(1);
                }
              fseek(fp,7, SEEK_SET);
              ch = fgetc(fp);
    	  putchar(ch);
              fclose(fp);
         }
    

    结果如下:
    在这里插入图片描述
    说明:第7个偏移量是取到的字符是w,文件的第一个字节偏移量是0.

    fread()函数是从文件中读count个字段, 每个字段长度为size个字节, 并把它们存放到buf指针所指的缓冲器中。

     #include <stdio.h>
       #include <stdlib.h>
         main()
         {
              FILE *fp;
              int dat[100];
              fp=fopen("example.dat", "rb");/*打开一个二进制文件只读*/
              if(fread(dat, sizeof(int), 100, fp)!=100)
                                            /*判断是否读了100个数*/
                {
                   if(feof(fp))
                     printf("End of file"); /*不到100个数文件结束*/
                   else
                     printf("Read error");  /*读数错误*/
              fclose(fp);                   /*关闭文件*/
         }
    }
    

    fwrite()函数是把buf指针所指的缓冲器中, 长度为size个字节的count个字段写到stream指向的文件中去。

    #include <stdio.h>
         main()
         {
              char buf[]={"wohao"};
                             /*定义浮点数组并初始化*/
              int i;
              FILE *fp;
              fp=fopen("test_b999.txt", "wt"); /*创建一个二进制文件只写*/
              fwrite(buf, sizeof(char),5,fp);/*将6个浮点数写入文件中*/
              fclose(fp);                   /*关闭文件*/
         }
    
    

    当用标准文件函数对文件进行读写操作时, 首先将所读写的内容放进缓冲区, 即写函数只对输出缓冲区进行操作, 读函数只对输入缓冲区进行操作。例如向一个文件写入内容, 所写的内容将首先放在输出缓冲区中, 直到输出缓冲区存满或使用fclose()函数关闭文件时, 缓冲区的内容才会写入文件中。若无fclose() 函数, 则不会向文件中存入所写的内容或写入的文件内容不全。有一个对缓冲区进行刷新的函数, 即fflush(), 其调用格式为:
    int fflush(FILE *stream);
    该函数将输出缓冲区的内容实际写入文件中, 而将输入缓冲区的内容清除掉。
    feof()和rewind()函数
    这两个函数的调用格式为:
    int feof(FILE *stream);
    int rewind(FILE *stream);
    feof()函数检测文件位置指示器是否到达了文件结尾, 若是则返回一个非0 值, 否则返回0。这个函数对二进制文件操作特别有用, 因为二进制文件中, 文件结尾标志EOF也是一个合法的二进制数, 只简单的检查读入字符的值来判断文件是否结束是不行的。如果那样的话, 可能会造成文件未结尾而被认为结尾, 所以就必须有feof()函数。
    下面的这条语句是常用的判断文件是否结束的方法。
    while(!feof(fp))
    fgetc(fp);
    while为循环语句, 将在下面介绍。
    rewind()函数用于把文件位置指示器移到文件的起点处, 成功时返回0, 否则, 返回非0值。
    非标准文件函数
    这类函数最早用于UNIX操作系统, ANSI标准未定义, 但有时也经常用到, DOS 3.0以上版本支持这些函数。它们的头文件为io.h。
    一、文件的打开和关闭
    1. open()函数
    open()函数的作用是打开文件, 其调用格式为:
    int open(char *filename, int access);
    该函数表示按access的要求打开名为filename的文件, 返回值文件描述符, 其中access有两部分内容: 基本模式和修饰符, 两者用" "(“或”)方式连接。修饰符可以有多个, 但基本模式只能有一个。access的规定如表3-2。
    表3-2 access的规定基本模式含义

    修饰符含 义
    O_RDONLY只读
    O_APPEND文件指针指向末尾
    O_WRONLY只写
    O_CREAT文件不存在时创建文件,属性按基本模式属性
    O_RDWR读写
    O_TRUNC若文件存在, 将其长度缩为0, 属性不变
    O_BINARY打开一个二进制文件
    O_TEXT打开一个文字文件

    open()函数打开成功, 返回值就是文件描述字的值(非负值), 否则返回-1。

    1. close()函数
      close()函数的作用是关闭由open()函数打开的文件, 其调用格式为:
      int close(int handle);
      该函数关闭文件描述字handle相连的文件。

    二、读写函数

    1. read()函数
      read()函数的调用格式为:
      int read(int handle, void *buf, int count);
      read()函数从handle(文件描述字)相连的文件中, 读取count个字节放到buf 所指的缓冲区中, 返回值为实际所读字节数, 返回-1表示出错。返回0 表示文件结束。

    2. write()函数
      write()函数的调用格式为:
      int write(int handle, void *buf, int count);
      write()函数把count个字节从buf指向的缓冲区写入与handle相连的文件中, 返回值为实际写入的字节数。

    3. create()函数
      create函数也能打开一个文件,如果文件不存在,则创建它。和open一样,creat也在调用成功后返回一个文件描述符,如果失败,则设置errno变量并返回-1.

    creat的原型为:

    int creat (const char *pathname,mode_t mode);
    实例如下:

    create("wen.txt",666);
    

    他等价于:

    open(pathname,O_CREAT | O_TRUNC | O_WRONLY,mode);

    在使用完某个函数后要关闭他,使用 close函数。close只有一个参数,即open返回的文件描述符.

    close的原型为:

              #include <unist.d>
    
               int close(int fd);    
    

    三、随机定位函数

    1. lseek()函数
      lseek()函数的调用格式为:
      int lseek(int handle, long offset, int fromwhere);
      该函数对与handle相连的文件位置指针进行定位, 功能和用法与fseek() 函数相同。

    2. tell()函数
      tell()函数的调用格式为:
      long tell(int handle);
      该函数返回与handle相连的文件现生位置指针, 功能和用法与ftell()相同。
      原文链接:https://blog.csdn.net/zwt0112/article/details/54582036

    展开全文
  • Matlab 文件读写函数

    千次阅读 2012-08-23 07:59:50
    Matlab提供多种能够进行文件读写函数,这些函数是Matlab语言的一部分,并不需要任何额外的工具箱的支持。 文本文件 Matlab中对文件的读写函数可以分为2大类:高级函数和低级函数。简单的说,高级函数的调用...
    董为国:《深入浅出MATLAB7.x混合编程》
    

    Matlab提供多种能够进行文件读写的函数,这些函数是Matlab语言的一部分,并不需要任何额外的工具箱的支持。

    文本文件

    Matlab中对文件的读写函数可以分为2大类:高级函数和低级函数。简单的说,高级函数的调用语法简单,方便使用;但是可定制性差,只适用某些特殊格式的文件类型,缺乏灵活性。

    在实际的使用中,很多人会推荐这样的一种选择原则:在读取文件时,尽量使用高级函数;在存写文件时尽量使用低级函数,因为高级函数存写文件时,文件的格式比较单一。

    高级命令

    常用的文本文件读写的高级函数包括以下8个:

    (1) 读:load

    load是Matlab中的一个内置函数。其主要功能是从文本文件或者MAT文件中把数据输入Matlab工作空间。

    如果各行的列数不相等,会出错。

    load的调用方式可以分为2种:

    命令形式:

    load bar.dat

    函数形式:

    [x] = load('bar.dat');

    (2) 读:importdata

    适合从文本文件或者特殊格式的二进制文件(比如.WAV等)中读取数据。importdata可以读取包含文字说明的文件,可以使用用户自定义的字符作为文件中每行各数据之间的分隔符,如不指定,自动以空格作为分隔符。如果各行的列数不同的话,importdata不会终止执行,而是会根据第一行的列数为准来决定输出矩阵的大小,所缺的列会以NaN代替。

    (3) 读:csvread

    用来读取用逗号隔开的数据文件。

    (4) 读:strread

    (5) 读:dlmread

    文件中不能包含说明文字。不过dlmread不但可以读取以逗号分割的数据文件,也可以读取那些用其它字符分割数据的文件。

    (6) 读:textread

    通过调用一个名为dataread.dll的MEX文件实现的。比前面提到的几个文件读取高级函数,textread同样具有调用语法简单的优点,同时对文件读取的可定制性更强。textread既能处理有固定格式的文件,也能处理无格式的文件,还能对文件每行的数据按列逐个读取。通常被用来处理一些已知格式的文件。{姓名,等级,X,Y,答案}

    Note: textread will be removed in a future version. Use 'textscan' instead. (Matlab 2011a)

    (7) 写:save

    save也是Matlab的一个内置函数,用来把当前Matlab工作空间的一个或者多个变量存入外部文件。在默认情况下,save命令以MAT格式存写数据,但也可以指定存写的文本方式。

    注意:save无法在文本文件中,保存复数变量。如果有复数时,save只保存它们的实部。另外,对于结构型变量,save只能保存结构型标量,而不能保存结构型变量数组。

    '-mat'             Binary MAT-file format (default).

    '-ascii'            8-digit ASCII format.

    '-ascii', '-tabs' Tab-delimited 8-digit ASCII format.

    '-ascii', '-double' 16-digit ASCII format.

    '-ascii', '-double', '-tabs' Tab-delimited 16-digit ASCII format.

    For more flexibility in creating ASCII files, use 'dlmwrite' or 'fprintf'. (Matlab 2011a)

    (8) 写:dlmwrite

    Write matrix to ASCII-delimited file



    低级命令

    这些命令和C语言里对文件的读写函数非常类似。操作过程一般包括:打开文件;读写文件;关闭文件。

    常用的文件读写低级命令有如下7个:

    (1) fopen

    fopen能够打开文件,也能够从打开的文件中获得信息。默认情况下,fopen以二进制格式打开文件。

    注意:如果文件打开模式里用“+”,如“a+t”、“w+t”等,对文件的读和写必须用fseek或者frewind隔开。

    (2) fclose

    文件打开、使用后最好关闭,以方便对该文件的其他操作。使用fopen打开文件以后,系统会把这个文件标记为"正在使用";使用fclose会清除这个标记,否则会影响到对文件的修改、删除等操作。

    (3) fgetl

    能够读取指定文件中的一行内容,但不包括新行分隔符。用fopen打开文件后,文件的读取位置是文件开头的地方,以后每次调用fgetl,这个读取位置会自动更新到下一行,一直到文件结尾的地方。

    (4) fgets

    fgets的功能和fgetl类似,都是读取当前文件读取位置所对应的下一行内容。区别在于,fgets将包含该行的新行标志。

    (5) fscanf

    fscanf具有更多的灵活性,能够读取有格式的文本文件。

    注意:用%s读取字符串后,其中的每个字符会被看成是返回的矩阵里的一个元素。而且,%s会忽略文件中的空格键。如果需要读取空格,则必须用%c。

    (6) textscan

    textscan是Matlab 7.0新增加的内置函数。它能够更为高效和灵活地读取文本文件数据,其和高级命令textread相似,但textcan能够更好地处理大型文件。textscan能从文件的任何地方开始读取数据,对于数据的转换,textscan提供了更多的选项。

    注意:textscan读取数据最大值uint32(4294967295),文件中相应的数字如果大于这个数,则被这个极限数字代替。

    (7) fprintf

    fprintf能够以类似于ANSI C语言中的有关函数那样按照用户指定的格式把数据打印文本信息。根据调用参数的不同,fprintf可以在文件或者屏幕上输出结果。

    Write data to text file
    展开全文
  •  1、隐式声明:没有声明的情况下,系统可根据参数类型判断去调用函数(有可能出错)  2、显式声明:声明被调用之前,如:double add(double,double); 函数声明参数可只写类型,不需要写函数体。 文件操作...
  • C文件读写函数介绍

    2017-03-07 13:42:36
    1.fopen() fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen实现三个功能:为使用而打开一个流,把一个文件和此流相连接,给此流返回一个FILR指针。 参数filename指向要打开的文件名,...
  • read函数: 1.原型:  #include  ssize_t read(int fd, void *buf,size_t count); ... 从打开的设备或文件中读取数据。...同时文件读写指针也会随读到的字节移动。  注意返回值类型是ssize_t,表示有符号的
  • C文件读写函数

    千次阅读 2018-09-14 13:14:31
    本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: ...导入导出Markdown文件 丰富的快捷键 快捷键 加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl + Q 插入链接 ...
  • C语言文件读写函数详解

    千次阅读 2016-03-24 12:40:54
     fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen实现三个功能:为使用而打开一个流,把一个文件和此流相连接,给此流返回一个FILR指针。  参数filename指向要打开的文件名,mode表示...
  • 常用的文件读写函数

    千次阅读 2017-12-12 10:03:10
    一、函数原型 ...path:文件路径 mode:打开方式 打开成功函数返回目标文件文件指针,否则返回空指针 size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream); ptr:保存数据的指针 siz
  • fopen文件读写函数

    千次阅读 2014-01-19 16:19:29
    如果您是c语言初学者,我想,您应该先知道... fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen实现三个功能:为使用而打开一个流,把一个文件和此流相连接,给此流返回一个FILR指针。  
  • 文件类型分为:流文件和设备文件 设备文件比如:VGA接口,串口,usb口,网口,串口,这些接口都被操作系统抽象成为了文件。   当我们写程序的时候默认已经帮我们打开了三个文件 分别是:  stdin:标准输入 ...
  • 文件操作函数(二)—— 文件的顺序读写

    千次阅读 多人点赞 2021-03-18 21:56:39
    在文件操作函数(一)中,我们已经学会了怎样正确地打开和关闭一个文件,即我们已经学会了一件事的开头和结尾,不要以为已经结束了,这才刚刚开始,真正重要的是打开了文件后,如何操作文件中的数据(输入数据和输出...
  • C文件读写相关函数

    千次阅读 2013-09-26 10:39:43
    数据以文件的形式存放外部介质(一般是磁盘、磁带、光盘等)上,操作系统中是以文件为单位对数据进行管理的。以文件名作为访问文件的标识。 2、C语言把文件看作一个字节序列,即由一连串的字节组成。根据...
  • 头文件:#include 定义函数:int fseek(FILE * stream, long offset, int whence);   fseek()用来移动文件流的读写位置. 1、参数stream 为已打开的文件指针, ...2、参数offset 为根据... 1)SEEK_SET 从距文件开头
  • Linux 文件读写函数的使用方法

    千次阅读 2012-11-14 15:01:01
    Linux平台下对文件编程可以使用两类函数:(1)Linux操作系统文件API;(2)C语言I/O库函数。 前者依赖于Linux系统调用,后者实际上与操作系统是独立的,因为任何操作系统下,使用C语言I/O库函数操作文件的方法...
  • 1、读文件函数 2、写文件函数
  • C语言文件读写操作中缓冲区问题和setbuf函数详解
  • rewind()函数用于将文件指针重新指向文件开头,同时清除和文件流相关的错误和eof标记,相当于调用fseek(stream, 0, SEEK_SET),其原型如下: void rewind(FILE * stream); 【参数】stream为以打开文件的指针。 ...
  • 常用的C/C++文本文件读写函数

    万次阅读 2015-12-28 22:12:39
    概述 文本文件读写是算法研究和工程应用中常见的功能模块。...对C和C++分开介绍,目的是让大家即能用C++读写文本文件,又能用C读写文本文件。不多不少,恰到好处地掌握好该掌握的读写知识。 C读写
  • python 读写文件函数open()用法

    千次阅读 2018-01-25 13:39:24
    1. open()语法 open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]]) ...open函数有很多的参数,常用的是file,mode和encoding file文件位置,需要加引号 mode文件
  • c语言文件读写操作

    万次阅读 多人点赞 2019-03-20 20:15:35
    当使用打开函数时,必须给出文件名、文件操作方式(读、写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头。若已有一个同名文件存在,则删除该文件,若无同名...
  • **一.文件对象的引入** 有时我们需要把数据永久存储起来,随时使用随时读取。例如,我们通过程序建立的列表、字典等数据,当程序结束时,需要把这些...文件一般都存储磁盘中,电脑中存储的图片、资料、音视频等都...
  • c 语言中,文件操作都是由库函数来实现的,主要是分为读和写两种操作: 文件指针 平常所说的文件不同于其他常见的数据类型,比如一个test.txt文档,它有自己的一些属性,比如文件的当前位置、与该文件对应的内存...
  • Python文件读写操作

    千次阅读 2019-05-18 18:28:34
    python中,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件。 open(文件名,访问模式) 访问模式: r以只读方式打开文件文件的指针将会放在文件开头。打开文件后,从文件的开...
  • C文件读写

    千次阅读 2017-02-15 14:31:12
    文件读写,前边我们说过iOS的,今天来说说C的 如何创建、打开、关闭文本文件或二进制文件?(C开发人员) 打开文件 可以使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 71,001
精华内容 28,400
关键字:

在函数开头进行文件读写