精华内容
下载资源
问答
  • vc读取TXT文件

    2012-08-12 10:35:47
    读取TXT文件 保存XY轴的坐标 在客户区生成曲线
  • VC 6.0 按顺序逐行读取TXT每行的数据内容,一行一行读取,基本的步骤和思路是:创建文件对话框、获得文件路径、打开文件、读文件、关闭文件。下面来看看具体的代码实现:  //创建文件对话框  CFileDialog dlg(TRUE...
  • vc读取和写入txt文档内容

    热门讨论 2011-11-07 11:49:04
    vc读取和写入txt文档内容 if(strLine!="") { for (p=strtok(str,";");p!=NULL;p=strtok(NULL,";")) { strTemp = p; result+=strTemp; //换行输出数据 result += "\r\n"; // ...
  • VC读写txt文件[整理].pdf
  • vctxt文件读写操作 很不错的,赞一个
  • vc读取txt文件的数据

    热门讨论 2010-10-18 19:36:03
    本代码包括创建 读取 写入等内容,用两种方法写的,朋友们可以看看
  • VC++逐行读取Txt文本文件,只是一个读写方式的不同,总之最终的目标是读取整个文件
  • VC 读写txt文件――FILE * 2011年04月25日  源地址:http://hi.baidu.com/greatren518/blog/item/56330af0c110abc67931aacc.html  C语言中没有输入输出语句,所有的输入输出功能都用ANSI C提供的一组标准...
    VC 读写txt文件――FILE * 
    
    2011年04月25日
      源地址:http://hi.baidu.com/greatren518/blog/item/56330af0c110abc67931aacc.html
      C语言中没有输入输出语句,所有的输入输出功能都用ANSI C提供的一组标准库函数来实现。文件操作标准库函数有:
            文件的打开操作 fopen 打开一个文件
            文件的关闭操作 fclose 关闭一个文件
            文件的读写操作 fgetc 从文件中读取一个字符
                    fputc 写一个字符到文件中去
                    fgets 从文件中读取一个字符串
                    fputs 写一个字符串到文件中去
                    fprintf 往文件中写格式化数据
                    fscanf 格式化读取文件中数据
                    fread 以二进制形式读取文件中的数据
                    fwrite 以二进制形式写数据到文件中去
                    getw 以二进制形式读取一个整数
                    putw 以二进制形式存贮一个整数
          文件状态检查函数 feof 文件结束
                    ferror 文件读/写出错
                    clearerr 清除文件错误标志
                    ftell 了解文件指针的当前位置
            文件定位函数 rewind 反绕
                    fseek 随机定位
      [b]文件的打开[/b]
       1.函数原型
      [b]    FILE *fopen(char *pname,char *mode)
      [/b]
       2.功能说明
         按照mode 规定的方式,打开由pname指定的文件。若找不到由pname指定的相应文件,就按以下方式之一处理:
      (1) 此时如mode 规定按写方式打开文件,就按由pname指定的名字建立一个新文件;
      (2) 此时如mode 规定按读方式打开文件,就会产生一个错误。
      打开文件的作用是:
      (1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量;
      (2)开辟一个缓冲区;
      (3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件;
      FILE *:指出fopen是一个返回文件类型的指针函数;
       3.参数说明
      pname:是一个字符指针,它将指向要打开或建立的文件的文件名字符串。
      mode:是一个指向文件处理方式字符串的字符指针。所有可能的文件处理方式见表8.1
       4.返回值
         正常返回:被打开文件的文件指针。
         异常返回:NULL,表示打开操作不成功。
      例如:
      FILE *fp;
      if((fp=fopen("test","r"))==NULL){
      printf("The file can not be opened.\n");
       
      exit(1);
      }
       要说明的是:C语言将计算机的输入输出设备都看作是文件。例如,键盘文件、屏幕文件等。ANSI C标准规定,在执行程序时系统先自动打开键盘、屏幕、错误三个文件。这三个文件的文件指针分别是:标准输入stdin、标准输出stdout和标准出错stderr。
      [b]文件的关闭[/b]
      1. 函数原型
      [b]    int fclose(FILE *fp);
      [/b]
      2. 功能说明
        关闭由fp指出的文件。此时调用操作系统提供的文件关闭功能,关闭由fp->fd指出的文件;释放由fp指出的文件类型结构体变量;返回操作结果,即0或EOF。
      3. 参数说明
        fp:一个已打开文件的文件指针。
      4. 返回值
        正常返回:0。
        异常返回:EOF,表示文件在关闭时发生错误。
      例如:
      int n;
      n=fclose(fp);
      [b]文件的读写操作[/b]
      [b]A. 从文件中读取一个字符
      [/b]  1. 函数原型
      [b]      int fgetc(FILE *fp);
      [/b]  2. 功能说明
          从fp所指文件中读取一个字符。
        3. 参数说明
          fp:这是个文件指针,它指出要从中读取字符的文件。
        4. 返回值
        正常返回: 返回读取字符的代码。
        非正常返回:返回EOF。例如,要从"写打开"文件中读取一个字符时,会发生错误而返回一个EOF。
        5. 实例
      【例8.1】显示指定文件的内容。
      程序名为:display.c
      执行时可用:display filename1 形式的命令行运行。显示文件filename1中的内容。例如,执行命令行display display.c将在屏幕上显示display的原代码。
      #include
      main(int argc,char *argv[])
      { int ch;
       
      FILE *fp;
       if(argc!=2)
       { printf("Error format,Usage: display filename1\n");
        exit(1);
       }
       if((fp=fopen(argv[1],"r"))==NULL){
        printf("The file can not be opened.\n",argv[1]);
         
      exit(1);
       }
       
       ch=fgetc(fp);
       while(ch!=EOF)
       { putchar(ch);
        ch=fgetc(fp);
       }
       fclose(fp);
      }
      [b]B. 写一个字符到文件中去
      [/b]
      1. 函数原型
      [b]  int fputc(int ch,FILE *fp)
      [/b]2. 功能说明
        把ch中的字符写入由fp指出的文件中去。
      3. 参数说明
        ch:是一个整型变量,内存要写到文件中的字符(C语言中整型量和字符量可以通用)。
        fp:这是个文件指针,指出要在其中写入字符的文件。
      4. 返回值
        正常返回: 要写入字符的代码。
        非正常返回:返回EOF。例如,要往"读打开"文件中写一个字符时,会发生错误而返回一个EOF。
      5. 实例
      【例8.2】将一个文件的内容复制到另一个文件中去。
      程序名为:copyfile.c
      执行时可用:copyfile filename1 filename2形式的命令行运行,将文件filename1中的内容复制到文件filename2中去。
      #include
      main(int argc,char *argv[])
      { int ch;
       FILE *in,*out;
       if(argc!=3)
       { printf("Error in format,Usage: copyfile filename1     
        filename2\n");
        exit(1);
       }
       if((in=fopen(argv[1],"r"))==NULL)
       { printf("The file can not be opened.\n",argv[1]);
        exit(1);
       }
       
       if((out=fopen(argv[2],"w"))==NULL)
       { printf("The file %s can not be opened.\n",argv[2]);
       exit(1);
       }
       
       ch=fgetc(in);
       while(ch!=EOF)
       { fputc(ch,out);
        ch=fgetc(in);
       }
       fclose(in);
       fclose(out);
      }
      【例8.3】按十进制和字符显示文件代码,若遇不可示字符就用井号"#"字符代替之。
      程序名为:dumpf.c
      执行时可用:dumpf filename1 形式的命令行运行。
      #include
      main(int argc,char *argv[])
      { char str[9];
       int ch,count,i;
       FILE *fp;
       if(argc!=2)
       { printf("Error format,Usage: dumpf filename\n");
        exit(1);
       }
       if((fp=fopen(argv[1],"r"))==NULL)
       { printf("The file %s can not be opened.\n",argv[1]);
        exit(0);
       }
       count=0;
       do{ i=0;
         printf("o: ",count*8);
        do{
      ch=fgetc(fp);
          printf("M",ch);
          if(ch'~') str='#';
          else str=ch;
          if(++i==8) break;
        }while(ch!=EOF);
        str='\0';
        for(;i函数原型
      [b]  char *fgets(char *str,int n,FILE *fp)
      [/b]2.功能说明
        从由fp指出的文件中读取n-1个字符,并把它们存放到由str指出的字符数组中去,最后加上一个字符串结束符'\0'。
      3. 参数说明
        str:接收字符串的内存地址,可以是数组名,也可以是指针。
        n: 指出要读取字符的个数。
        fp:这是个文件指针,指出要从中读取字符的文件。
      4. 返回值
      正常返回:返回字符串的内存首地址,即str的值。
      非正常返回:返回一个NULL值,此时应当用feof()或ferror()函数来判别是读取到了文件尾,还是发生了错误。例如,要从"写打开"文件中读取字符串,将
      发生错误而返回一个NULL值。
      [b]D. 写一个字符串到文件中去
      [/b]
      1. 函数原型
      [b]  int fputs(char *str,FILE *fp)
      [/b]2. 功能说明
        把由str指出的字符串写入到fp所指的文件中去。
      3. 参数说明
        str:指出要写到文件中去的字符串。
        fp:这是个文件指针,指出字符串要写入其中的文件。
      4. 返回值
        正常返回: 写入文件的字符个数,即字符串的长度。
        非正常返回:返回一个NULL值,此时应当用feof()或ferror()函数来判别是读取到了文件尾,还是发生了错误。例如,要往一个"读打开"文件中写字符串时,
      会发生错误而返回一个NULL值。
      5.实例
      【例8.4】以下程序将一个文件的内容附加到另一个文件中去。
      设下面这个程序名为:linkfile.c
      执行时可用:linkfile filename1 filename2形式的命令行运行,将文件filename2的内容附加在文件filename1之后。
      #include
      #define SIZE 512
      main(int argc,char *argv[])
      { char buffer[SIZE];
       FILE *fp1,*fp2;
       if(argc!=3)
       { printf("Usage: linkfile filename1 filename2\n");
        exit(1);
       }
       if((fp1=fopen(argv[1],"a"))==NULL)
       { printf("The file %s can not be opened.\n",argv[1]);
        exit(1);
       }
      if((fp2=fopen(argv[2],"r"))==NULL)
      { printf("The file %s can not be opened.\n",argv[2]);
        exit(1);
      }
      while(fgets(buffer,SIZE,fp1)!=NULL)
        printf("%s\n",buffer);
      while(fgets(buffer,SIZE,fp2)!=NULL)
        fputs(buffer,fp1);
      fclose(fp1);
      fclose(fp2);
      if((fp1=fopen(argv[1],"r"))==NULL)
      { printf("The file %s can not be opened.\n",argv[1]);
        exit(1);
      }
      while(fgets(buffer,SIZE,fp1)!=NULL)
        printf("%s\n",buffer);
      fclose(fp1);
      }
      [b]E. 往文件中写格式化数据
      [/b]
      1.函数原型
      [b]  int fprintf(FILE *fp,char *format,arg_list)
      [/b]2.功能说明
        将变量表列(arg_list)中的数据,按照format指出的格式,写入由fp指定的文件。fprintf()函数与printf()函数的功能相同,只是printf()函数是将数据写入屏幕文件(stdout)。
      3.参数说明
        fp:这是个文件指针,指出要将数据写入的文件。
        format:这是个指向字符串的字符指针,字符串中含有要写出数据的格式,所以该字符串成为格式串。格式串描述的规则与printf()函数中的格式串相同。
      arg_list:是要写入文件的变量表列,各变量之间用逗号分隔。
      4.返回值
        无。
      5. 实例
      【8.5】下列程序的执行文件为display.exe,执行时键入命令行:
         display [-i][-s] filename
      下面的表格列出了命令行参数的含义及其功能:
      读写txt文件
    展开全文
  •  最近突然想用用TXT文件存储数据,网上找了段源码,采用CStdioFile类简单方便,但出现一个很奇怪的问题,从TXT读取的文件一旦遇到中文就变成乱码,可重新写进TXT文档却又全部正常,后来发现是ANSI格式UNICODE格式...

    原文地址::http://blog.csdn.net/callmezane/article/details/7172920


    相关文章

    1、[C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试----http://www.cnblogs.com/zyl910/archive/2013/01/20/wchar_crtbug_01.html



     最近突然想用用TXT文件存储数据,网上找了段源码,采用CStdioFile类简单方便,但出现一个很奇怪的问题,从TXT读取的文件一旦遇到中文就变成乱码,可重新写进TXT文档却又全部正常,后来发现是ANSI格式UNICODE格式兼容问题,貌似VC2005以上版本都有这毛病,网上找了很多解决方法,不过某位大神设置语言区域的方法最简单实用,源码贴出来供大家参考

     
     



    展开全文
  • 写的很详细的关于如何用VC读取txt文件的例子。一看就会。给出了如何使用VC++读取txt文件的例子。
  • 内容索引:VC/C++源码,其它分类,MFC VC++基于mfc 实现对话框打开读取txt文件,显示在edit box 中,一个简单的MFC小例子,相信有不少朋友需要这个吧。
  • vc 读取txt文件 并按行显示 源码

    热门讨论 2009-05-08 15:34:16
    vc 读取txt文件 并按行显示 源码 希望有用 vc txt 源码vc txt 源码
  • vc读取TXT文件中的数值数据(类文件)

    千次下载 热门讨论 2008-04-20 23:49:30
    压缩包里包括一个.h文件和一个.cpp文件,用带有TXT文件路径参数的构造函数建立对象,就可以自动把TXT文件中的数值保存到数组中,这个类用的是DOUBLE型,可以根据自己的需要更改,我初学VC,有不妥的地方请指正。...
  • vc6.0读取超大txt文本文件

    热门讨论 2014-04-11 08:46:16
    Vc读取txt文件 普通大小的一般用fread就可以了,但是遇到大容量的文本文件会有读取错误的现象,那该怎么办呢?本程序是用MFC的CFile类解决的 经过测试没有问题
  • VC中怎么读取文件

    千次阅读 2019-08-21 08:48:01
    VC文件操作有三种方式,使用C标准库,使用WINAPI或使用MFC库 一.C标准库 1.创建打开文件fopen FILE *fopen(const char* filename, Const char* mode)//相应有Unicode版本 _wfopen filename文件名 还有基于CRT的...

    一、

      CStdioFile

    二、

      FILE* f = fopen("file name", "mode");
      char buff[size];
      fread(buff, size, 1, f);
      fclose(f);

    三、

      //用MFC读文件
      CFile file("yourfile.txt",CFile::modeRead);

      char *pBuf;
      int iLen=file.GetLength();
      pBuf =new char[iLen 1];
      file.Read(pBuf,iLen);
      pBuf[iLen]=0;

      file.Close();
      MessageBox(pBuf);

    四、

      //用C SDK 读文件

      HANDLE hFile;
      hFile=CreateFile("2.txt",GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
      char ch[100];
      DWORD dwReads;
      ReadFile(hFile,ch,100,&dwReads,NULL);
      CloseHandle(hFile);
      ch[dwReads]=0;
      MessageBox(ch);*
    五、

      用C读文件
      FILE *pFile=fopen("1.txt","rb");
      char *pBuf;
      fseek(pFile,0,SEEK_END);//移动文件指针到文件末尾
      int len=ftell(pFile);//获取当前文件指针在文件中的偏移量,Gets the current position of a file pointer.offset 
      pBuf=new char[len];
      rewind(pFile);//将指针移动到文件头,Repositions the file pointer to the beginning of a file
      //也可以用fseek(pFile,0,SEEK_SET);
      fread(pBuf,1,len,pFile);
      pBuf[len]=0;
      fclose(pFile);

      MessageBox(pBuf);



    在VC中文件操作有三种方式,使用C标准库,使用WINAPI或使用MFC库
    一.C标准库
    1.创建打开文件fopen
    FILE *fopen(const char* filename,
    Const char* mode)//相应有Unicode版本 _wfopen
    filename文件名
    还有基于CRT的安全版本
    errno_t fopen_s(
    FILE ** pFile,
    const char * filename,
    const char * mode) //相应有Unicode版本 _wfopen_s
    pFile要接收指向已打开的文件的指针的指针
    filename文件名
    mode:
    r 以只读方式打开文件,该文件必须存在;
    r+ 以可读写方式打开文件,该文件必须存在;
    rb+ 读写打开一个二进制文件,允许读数据;
    rw+ 读写打开一个文本文件,允许读和写;
    w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件;
    w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件;
    a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留(EOF符保留);
    a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留(原来的EOF符不保留);
    wb 只写打开或新建一个二进制文件;只允许写数据;
    wb+ 读写打开或建立一个二进制文件,允许读和写;
    ab+ 读写打开一个二进制文件,允许读或在文件末追加数据;
    at+ 打开一个叫string的文件,a表示append,就是说写入处理的时候是接着原来文件已有内容写入,不是从头写入覆盖掉,t表示打开文件的类型是文本文件,+号表示对文件既可以读也可以写;
    2.读取文件
    size_t fread(void * buffer,
    size_t size,
    size_t count,
    FILE * stream)
    buffe输出文件的缓存指针
    size每次读取的最小单位
    count读取次数
    stream读取的文件指针
    返回实际读取到的文件块数
    size_t fread_s(
    void * buffer,
    size_t bufferSize,
    size_t elementSize,
    size_t count,
    FILE * stream)
    buffer读取数据的存取位置
    bufferSize读取数据的缓冲区大小
    elementSize每次读取块的最小单位
    count读取想的数量
    stream文件句柄
    3.fwrite写操作
    size_t fwrite(
    const void * buffer,
    size_t size,
    size_t count,
    FILE * stream)

    4.fseek跳转
    int fseek(
    FILE * stream,
    Long offset,
    int origin)//64位的跳转方法fseeki64
    offset偏移位置
    origin初始位置 //三个参数SEEK_CUR文件指针的当前位置;SEEK_END文件结尾;SEEK_SET文件开头
    成功返回0失败非0值
    5.关闭流fclose
    Int fclose(FILE * stream)
    如果关闭成功返回0
    二.WinApi
    1.创建或打开一个文件CreateFile
    HANDLE CreateFile(LPCTSTR lpFileName,
    DWORD dwDesiredAccess,
    DWORD dwShareMode,
    LPSECURITY_ATTRIBUTES lpSecurityAttributes,
    DWORD dwCreationDisposition,
    DWORD dwFlagsAndAttributes,
    HANDLE hTemplateFile)
    lpFileName要打开的文件名称
    dwDesiredAccess指明对象的控制模式。一个应用可以包含读控制,写控制,读/写控制,设备查询控制; 
    0 指定设备查询控制:程序可以不访问设备就查询到设备属性
    GENERIC_READ 指定读控制,可以从对象中读取数据
    GENERIC_WRITE 指定写控制,可以向对象中写数据
    标准控制权限(16-23位掩码):
    DELETE 删除对象的权限。
    READ_CONTROL 从对象的安全描述符中读取信息的权限,但不包括SACL(系统访问控制列表)中的信息
    WRITE_DAC 修改对象安全描述符中的DACL(随机访问控制列表)的权限
    WRITE_OWNER 修改对象安全描述符中的属主的权限
    SYNCHRONIZE 同步化使用对象的权限,即可以创建一个线程等待信号量释放(但有些对象不支持这个权限)
    STANDARD_RIGHTS_REQUIRED 等价于前面四种权限的总合(通常这四种是必须具有的权限)
    STANDARD_RIGHTS_READ 一般等价于READ_CONTROL
    STANDARD_RIGHTS_WRITE 一般等价于READ_CONTROL
    STANDARD_RIGHTS_EXECUTE 一般等价于READ_CONTROL
    STANDARD_RIGHTS_ALL 等价于前面五种权限的总合
    特殊控制权限(0-15位掩码):
    SPECIFIC_RIGHTS_ALL
    ACCESS_SYSTEM_SECURITY
    MAXIMUM_ALLOWED
    GENERIC_READ
    GENERIC_WRITE
    GENERIC_EXECUTE
    GENERIC_ALL 
    dwShareMode指定对象的共享模式,如果为0,表示是互斥使用的,如果CreateFile打开成功,则别的程序只能等到当前程序关闭对象句柄CloseHandle后才能再打开使用
    FILE_SHARE_DELETE 打开操作只有在删除时才能返回成功
    FILE_SHARE_READ 打开操作只有在读时才能返回成功
    FILE_SHARE_WRITE 打开操作只有在写时才能返回成功
    dwCreationDisposition指名当代开对象不存在时需要怎么样的处理,以下其中之一:
    CREATE_NEW 创建新文件/对象(当对象已经存在是将返回失败)。
    CREATE_ALWAYS 总是创建(如果对象存在就覆盖它,清除当前属性,把文件属性和dwFlagsAndAttributes指定的标志相结合)。
    OPEN_EXISTING 打开文件(如果不存在就返回失败)。
    OPEN_ALWAYS 存在就打开;若不存在,假如dwCreationDisposition==CREATE_NEW就创建一个新文件。
    TRUNCATE_EXISTING 存在就打开,且清空文件内容(至少要有GENERIC_WRITE权限);若文件不存在就返回失败。
    dwFlagsAndAttribute指定文件的属性标志以下任意组合,(有FILE_ATTRIBUTE_NORMAL必须单独使用)
    FILE_ATTRIBUTE_ARCHIVE文件存档(备份或移动时会对文件做标记);FILE_ATTRIBUTE_ENCRYPTED 加密(对文件来说是内容加密,对目录来说是对将来新建的文件默认为加密属性),与此同时,如果还设置了FILE_ATTRIBUTE_SYSTEM属性,当前这个属性将无效;
    FILE_ATTRIBUTE_HIDDEN 隐藏属性;
    FLE_ATTRIBUTE_NORMAL 文件没有其他属性设置,此属性只能单独使用才合法;
    FILE_ATTRIBUTE_NOT_CONTENT_INDEXED 不建立内容索引;
    FILE_ATTRIBUTE_OFFLINE 脱机属性。文件内容暂时不可用。此属性被Remote Storage软件所用,不能任意更改;
    FILE_ATTRIBUTE_READONLY 只读文件属性。应用程序不能写或删除;
    FILE_ATTRIBUTE_SYSTEM 文件是系统文件或被操作系统互斥地使用;
    FILE_ATTRIBUTE_TEMPORARY 临时文件,使用过程中尽量留在内存以保证存取速度;
    FILE_FLAG_WRITE_THROUGH 指示系统立即写磁盘。这个写操作允许被cache缓存,但不能被搁置;
    FILE_FLAG_OVERLAPPED 指示系统初始化对象,如果操作需要大量时间执行就先返回一 个 ERROR_IO_PENDING,当操作 完成后再通过事件使能信号量。指定这个标志就必须在read和write函数里初始化OVERLAPPED 结构体,应用程序必须执行重复的读写操作。此时,操作系统不维护文件指针,当前的位置 需要通过OVERLAPPED的指针传递给读写函数。这个标志还允许多个操作的并行(并行读写);
    FILE_FLAG_NO_BUFFERING 指示系统不要缓冲,它如果和FILE_FLAG_OVERLAPPED联合使用,将呈现最好的异步性能,因为I/O操作并不依赖于内存管理器的同步性。但是有时I/O操作会慢些,因为没用cache。有时程序需要做调整,比如文件大小必须是扇区大小的整数倍,Buffer地址的按扇区地址对齐等。按扇区地址对齐内存边界可以使用VirtualAlloc来分配内存,GerDiskFreeSpace函数可以得到磁盘一个扇区的大小;
    FILE_FLAG_RANDOM_ACCESS 指示文件进行随即存取,系统可据此对cache的分配进行优化;
    FILE_FLAG_SEQUENTIAL_SCAN 指示顺序存取,系统也可据此对cache的分配进行优化。即使有随即存取的操作,也不会出错,不过cache的优化就取消了。在连续读取大文件时性能非常好;
    FILE_FLAG_DELETE_ON_CLOSE 指示系统在句柄关闭时将响应的文件立即删除,对当前句柄以外的其他句柄也有效。而且随后的打开请求也会失败,直到你使用了FILE_SHARE_DELETE属性;
    FILE_FLAG_BACKUP_SEMANTICS 在Windows NT/2000/XP平台上:指示文件作为备份或恢复文件打开,这是如果调用进程拥有特殊权限(SE_BACKUP_NAME 或 SE_RESTORE_NAME),就可以不进行安全检查。也可以在获得一个目录的句柄时设置这个flag,目录句柄可以代替文件句柄传递给一些函数;
    FILE_FLAG_POSIX_SEMANTICS 指明按照操作系统接口规范进行文件存取,这包括允许多文件名的使用。请谨慎使用,因为MS_DOS或16位Windows系统可能不支持;
    FILE_FLAG_OPEN_REPARSE_POINT 这个标志指明禁止文件系统的重解析点的动作。文件打开时就返回文件的句柄,而不在乎控制重解析点的过滤器是否可运行。不能和CREATE_ALWAYS同时使用;
    FILE_FLAG_OPEN_NO_RECALL 表明文件数据被请求,但仍然驻留在远程存储体中,而不会被传回本地存储体。这个标志 由远程存储系统或分层存储管理系统使用。如果CreateFile函数打开一个命名管道的客户端,dwFlagsAndAttributes 参数也会包含服务信息的安全性。当调用程序指定了;
    SECURITY_PRESENT标志时,dwFlagsAndAttributes 参数可以取以下一个或多个值: SECURITY_ANONYMOUS 指定将客户端模拟在匿名级别(the Anonymous impersonation level)
    SECURITY_IDENTIFICATION 指定将客户端模拟在身份认证级别(the Identification impersonation level)
    SECURITY_IMPERSONATION 指定将客户端模拟在伪装级别(the Impersonation impersonation level)
    SECURITY_DELEGATION 指定将客户端模拟在授权级别(the Delegation impersonation level)
    SECURITY_CONTEXT_TRACKING 指定安全跟踪模式是动态的,否则(不指定此标志)是静态的
    SECURITY_EFFECTIVE_ONLY 指定客户端的安全内容中的有效内容才可以被服务端使用,否则所有内容都可被使用。 这个标志允许客户端限制服务端在模拟客户端时所具有的权限。
    hTemplateFile把具有GENERIC_READ权限的句柄指定为一个模板文件。这个模板文件提供了文件属性和扩展属性,用于创建文件。在Windows95/98/Me平台上:这个参数必须为空,否则如果你提供一个句柄,函数调用将会失败,用GerLastError函数获得的出错信息为ERROR_NOT_SUPPORTED
    调用如果成功,返回值时一个打开文件的句柄。
    在Windows 2000/XP平台上:
    如果你企图打开一个远程机器上的文件或目录,dwDesiredAccess设置为DELETE或者任一其他的控制标志,而这时远程文件或目录还没有以FILE_SHARE_DELETE的方式打开的话,你的函数调用就会发生共享错误了。为了避免共享错误,一种办法是单独用DELETE方式打开远程文件或目录,另一种方法是在打开文件或目录之前先调用DeleteFile函数。
    如果dwCreationDisposition 参数指定为CREATE_ALWAYS 并且dwFlagsAndAttributes 参数指定为FILE_ATTRIBUTE_NORMAL 的话,CreateFile调用将失败,GetLastError报告的错误是ACCESS_DENIED。这时,把dwFlagsAndAttributes 参数设置为FILE_ATTRIBUTE_HIDDEN和FILE_ATTRIBUTE_NORMAL的联合值,将避免这个问题。
    2.ReadFile函数从文件指针指定的位置读取数据。读操作完成后,文件指针将根据实际读出的数据自动进行调整,除非文件句柄是以OVERLAPPED属性值打开的。如果是以OVERLAPPED打开的I/O,应用程序就需要自己手动调整文件指针。
    这个函数被设计成兼有同步和异步操作。ReadFileEx函数则设计成只支持异步操作,异步操作允许应用程序在读文件期间可以同时进行其他的操作。
    BOOL ReadFile(HANDLE hFile, 
    LPVOID lpBuffer,
    DWORD nNumberOfBytesToRead, 
    LPDWORD lpNumberOfBytesRead, 
    LPOVERLAPPED lpOverlapped)
    hFile文件句柄(必须具有GENERIC_READ访问权限)。在Windows NT/2000/XP平台上:对于异步读操作,hFile可以是由CreateFile函数以FILE_FLAG_OVERLAPPED方式打开的任何句柄,或者一个由socket或accept函数返回的socket句柄。 在Windows 95/98/Me平台上:对于邮槽、命名管道和磁盘文件不能使用异步读操作。
    lpBuffer用来接收从文件中读出的数据的缓冲区指针。
    nNumberOfBytesToRead 指明要读的字节总数。
    lpNumberOfBytesRead 一个变量指针,用来存储实际传输的字节总数。ReadFile在做所有事情(包括错误检查)之前,先将这个值赋为0。当ReadFile从一个命名管道上返回TRUE时这个参数为0,说明消息管道另一端调用WriteFile时设置的nNumberOfBytesToWrite 参数为0;在Windows NT/2000/XP平台上:如果lpOverlapped 为NULL,则lpNumberOfBytesRead不能为NULL。如果lpOverlapped 不是NULL,lpNumberOfBytesRead可以设为NULL。如果是一个overlapped形式的读操作,我们可以动用GetOverlappedResult函数来获得传输的实际字节数。如果hFile关联的是一个完成端口(I/O completion port),那么可以调用GetQueuedCompletionStatus函数来获得传输的实际字节数。如果完成端口(I/O completion port)被占用,而你用的是一个用于释放内存的回调例程,对于lpOverlapped参数指向的OVERLAPPED结构体来说,为这个参数指定NULL可以避免重新分配内存时发生内存泄漏。内存泄漏会导致返回这个参数值时是一个非法值。 Windows 95/98/Me平台上:这个参数不允许为NULL。
    lpOverlapped 一个指向OVERLAPPED结构体的指针。如果hFile是以FILE_FLAG_OVERLAPPED方式获得的句柄,这个结构是必须的,不能为NULL。(否则函数会在错误的时刻报告读操作已经完成了)。这时,读操作在由OVERLAPPED中Offset成员指定的偏移地址开始读,并且在实际完成读操作之前就返回了。在这种情况下,ReadFile返回FALSE,GerLastError报告从错误类型是ERROR_IO_PENDING。这允许调用进程继续其他工作直到读操作完成。OVERLAPPED结构中的事件将会在读操作完成时被使能。 如果hFile不是以FILE_FLAG_OVERLAPPED方式获得的句柄,并且lpOverlapped为NULL,读操作就从当前文件的开始位置读起,直到读操作完成ReadFile函数才能返回。在Windows NT/2000/XP平台上:如果hFile不是以FILE_FLAG_OVERLAPPED方式获得的句柄,并且lpOverlapped不为NULL,则读操作在由OVERLAPPED中Offset成员指定的偏移地址开始读,直到读操作完成ReadFile函数才能返回。在Windows 95/98/Me平台上:对于文件、磁盘、管道和邮槽的操作,这个参数必须为NULL。一个不为空的OVERLAPPED结构体指针将导致调用失败。Windows 95/98/Me平台只支持串行口和并行口的overlapped 读写。 
    有如下任一种情况发生都会导致函数返回:(1)在管道另一端的写操作完成后(2)请求的字节数传输完毕(3)发生错误。 如果函数正确,返回非零。 如果返回值是非零,但接收的字节数是0,那么可能是文件指针在读操作期间超出了文件的end位置。然而,如果文件以FILE_FLAG_OVERLAPPED方式打开,lpOverlapped 参数不为NULL,文件指针在读操作期间超出了文件的end位置,那么返回值肯定是FALSE,GetLastError返回的错误是ERROR_HANDLE_EOF。
    3.WriteFile可以以同步或异步的方式向一个对象句柄中写数据
    BOOL WriteFile(HANDLE hFile,
    LPCVOID lpBuffer,
    DWORD nNumberOfBytesToWrite,
    LPDWORD lpNumberOfBytesWritten,
    LPOVERLAPPED lpOverlapped)
    三MFC
    CFile类:通常,在CFile类构造时用于自动打开一个磁盘文件,析构时关闭文件。静态成员函数允许查阅一个未打开的文件。
    1.Open打开文件
    virtual BOOL Open(LPCTSTR lpszFileName,
    UINT nOpenFlags,
    CFileException* pError = NULL)
    CFile::modeCreate 直接构造去创建一个新的文件如果这个文件存在,则删除这个文件里所有内容   
    CFile::modeNoTruncate 联合创建属性,如果这个文件已创建,则不删除原文件内容,因而这个文件是可以当做一个已经存在,或者不存在而被新建的文件来保证打开。这是非常有意义的,例如,打开来设置一个存在或者不存在的文件都是可以的。这个属性对于CStdioFile也是非常好的
    CFile::modeRead 打开为只读属性.
    CFile::modeWrite 打开为只写属性.
    CFile::modeReadWrite 打开为读写属性.
    CFile::modeNoInherit 防止这个文件来源于子进程.
    CFile::shareDenyNone 在这个文件读写处理之外打开这个文件
    CFile::shareDenyRead 以独占方式打开,拒绝其他读操作
    CFile::shareDenyWrite 以独占方式打开,拒绝其他写操作
    CFile::shareExclusive 以独占方式打开文件,拒绝其他读写操作访问这个文件Opens the file with exclusive mode, denying other 如果这个文件已打开进行读写操作则构造失败
    CFile::shareCompat 这个属性在 32 bit MFC是不可用的. This flag maps to CFile::shareExclusive 当应用在CFile::Open.
    CFile::typeText 设置文本模式特别处理回车换行 (used in derived classes only).
    CFile::typeBinary 设置二进制模式(used in derived classes only).
    2.读文件
    virtual UINT Read(
    void* lpBuf,
    UINT nCount )
    lpBuf:用户指定的要存储所读的内容的缓冲区指针
    nCount:指定要读写的最大字节数
    返回实际读的字节数 当遇到EOF时,小于nCount
    3.写文件
    virtual void Write(
    const void* lpBuf,
    UINT nCount)
    lPBuf:指向要写入的数据的缓冲区
    nCount:要写入的字节数
    4.刷新缓存
    virtual void Flush( )
    将文件缓冲区中的数据写进文件中,一般在调用write函数之后都要调用以下Flush函数


    展开全文
  • vc 读取多个txt文件

    2010-09-27 13:47:25
    利用vc读取多个不同格式的文件。大家共同学习~可实现选取时段读取或给定范围读取。
  • 存储文件名:save.txt程序代码如下:#include #define SIZE 100main(int argc,char *argv[]){ char buffer[SIZE],*filename;FILE *in,*out;int n,count,sflag=0,iflag=0;if(argc<2||argc>4){ printf("Usage:...

    存储文件名:save.txt

    程序代码如下:

    #include

    #define SIZE 100

    main(int argc,char *argv[])

    { char buffer[SIZE],*filename;

    FILE *in,*out;

    int n,count,sflag=0,iflag=0;

    if(argc<2||argc>4)

    { printf("Usage:display [-i] [-s] filename.\n");

    exit(1);

    }

    for(n=1;n

    { if(!strcmp(argv[n],"-i"))

    iflag=1; else if(!strcmp(argv[n],"-s")) sflag=1;

    else

    filename=argv[n]; }

    if((in=fopen(filename,"r"))==NULL)

    { printf("The file %s can not be opened.\n",filename);

    exit(1);

    }

    if((out=fopen("save.txt","w"))==NULL)

    { printf("The file %s can not opened.\n","save.txt");

    exit(1);

    }

    count=1; while(fgets(buffer,SIZE,in)!=NULL)

    { if(iflag==1){

    printf("=:%s",count,buffer);

    if(sflag==1) fprintf(out,"=:%s",count,buffer);

    }

    else {

    printf("%s",buffer);

    if(sflag==1) fprintf(out,"%s",buffer);

    }

    count++;

    }

    fclose(in);

    fclose(out);

    }

    F. 格式化读取文件中数据

    1.函数原型

    int fscanf(FILE *fp,char

    *format,arg_list)2. 功能说明

    从由fp指定的文件中,按照format指出的格式,将数据读入到由变量表列(arg_list)所列出的相应变量中去。fscanf()函数与scanf()函数的功能相同,只是scanf()函数是从键盘文件(stdin)中读入数据。

    3. 参数说明

    fp:这是个文件指针,指出要从其中读出数据的文件。

    format:这是个指向字符串的字符指针,字符串中含有要读入数据的格式,所以该字符串成为格式串。格式串描述的规则与scanf()函数中的格式串相同。

    arg_list:要将数据存入其中的变量表列,各变量之间用逗号分隔。

    4. 返回值

    返回变量个数。

    5.实例

    【8.6】从键盘输入一个学生的姓名、班级、年龄和学号,写入student.txt文件中,再从该文件中读取这些资料,输出到屏幕上显示。

    #include

    main()

    { char name[10];

    int age,class;

    long number;

    FILE *fp;

    if((fp=fopen("student.txt","w"))==NULL)

    { printf("The file %s can not be opened.\n","student.txt");

    exit(1);

    }

    fscanf(stdin,"%s %d %d

    %ld",name,&class,&age,&number);

    fprintf(fp,"%s ] M %8ld",name,class,age,number);

    fclose(fp);

    if((fp=fopen("student.txt","r"))==NULL)

    { printf("The file %s can not be opened.\n","student.txt");

    exit(1);

    }

    fscanf(fp,"%s %d %d

    %ld",name,&class,&age,&number);

    printf("name class age number\n");

    fprintf(stdout,"%-10s%-8d%-6d%-8ld\n",name,class,age,number);

    fclose(fp);

    }

    G. 以二进制形式读取文件中的数据

    1. 函数原型

    int fread(void *buffer,unsigned sife,unsigned count,FILE

    *fp)2. 功能说明

    从由fp指定的文件中,按二进制形式将sife*count个数据读到由buffer指出的数据区中。

    3. 参数说明

    buffer:这是一个void型指针,指出要将读入数据存放在其中的存储区首地址。

    sife:指出一个数据块的字节数,即一个数据块的大小尺寸。

    count:指出一次读入多少个数据块(sife)。

    fp:这是个文件指针,指出要从其中读出数据的文件。

    4.返回值

    正常返回:实际读取数据块的个数,即count。

    异常返回:如果文件中剩下的数据块个数少于参数中count指出的个数,或者发生了错误,返回0值。此时可以用feof()和ferror()来判定到底出现了什么

    情况。

    H. 以二进制形式写数据到文件中去

    1. 函数原型

    int fwrite(void *buffer,unsigned sife,unsigned count,FILE

    *fp)2. 功能说明

    按二进制形式,将由buffer指定的数据缓冲区内的sife*count个数据写入由fp指定的文件中去。

    3. 参数说明

    buffer:这是一个void型指针,指出要将其中数据输出到文件的缓冲区首地址。

    sife:指出一个数据块的字节数,即一个数据块的大小尺寸。

    count:一次输出多少个数据块(sife)。

    fp:这是个文件指针,指出要从其中读出数据的文件。

    4.返回值

    正常返回:实际输出数据块的个数,即count。

    异常返回:返回0值,表示输出结束或发生了错误。

    5.实例

    【例8.7】

    #include

    #define SIZE 4

    struct worker{ int number;

    char name[20];

    int age;

    };

    main()

    { struct worker wk;

    int n;

    FILE *in,*out;

    if((in=fopen("file1.txt","rb"))==NULL)

    { printf("The file %s can not be opened.\n","file1.txt");

    exit(1);

    }

    if((out=fopen("file2.txt","wb"))==NULL)

    { printf("The file %s can not be opened.\n","file2.txt");

    exit(1);

    }

    while(fread(&wk,sizeof(struct

    worker),1,in)==1)

    fwrite(&wk,sizeof(struct worker),1,out);

    fclose(in);

    fclose(out);

    }I. 以二进制形式读取一个整数

    1. 函数原型

    int getw(FILE *fp)2. 功能说明

    从由fp指定的文件中,以二进制形式读取一个整数。

    3. 参数说明

    fp:是文件指针。

    4. 返回值

    正常返回:所读取整数的值。

    异常返回:返回EOF,即-1。由于读取的整数值有可能是-1,所以必须用feof()或ferror()来判断是到了文件结束,还是出现了一个出错。

    5. 实例

    【例8.8】

    #include main(int argc,char

    *argv[])

    { int i,sum=0;

    FILE *fp;

    if(argc!=2)

    { printf("Command error,Usage: readfile filename\n");

    exit(1);

    }

    if(!(fp=fopen(argv[1],"rb")))

    { printf("The file %s can not be opened.\n",argv[1]);

    exit(1);

    }

    for(i=1;i<=10;i++) sum+=getw(fp);

    printf("The sum is %d\n",sum);

    fclose(fp);

    }

    J. 以二进制形式存贮一个整数

    1.函数原型

    int putw(int n,FILE *fp)2. 功能说明

    以二进制形式把由变量n指出的整数值存放到由fp指定的文件中。

    3. 参数说明

    n:要存入文件的整数。

    fp:是文件指针。

    4. 返回值

    正常返回:所输出的整数值。

    异常返回:返回EOF,即-1。由于输出的整数值有可能是-1,所以必须用feof()或ferror()来判断是到了文件结束,还是出现了一个出错。

    5. 实例

    【例8.9】

    #include

    main(int argc,char *argv[])

    { int i;

    FILE *fp;

    if(argc!=2)

    { printf("Command error,Usage: writefile filename\n");

    exit(1);

    }

    if(!(fp=fopen(argv[1],"wb")))

    { printf("The file %s can not be opened.\n",argv[1]);

    exit(1);

    }

    for(i=1;i<=10;i++)printf("%d\n", putw(i,fp));

    fclose(fp);

    }

    展开全文
  • VC 读写并独立存储文件(Txt),主要是操作文本文件,加入了窗体化效果,在创建任何控件之前启用 Windows XP 可视化效果,具体实现请下载源码查看。
  • vc编程实现数据保存到txt文件里,和从txt文件读取数据
  •  假设你已有了名为ts.txt文件在你的工程目录下:  {  CStdioFile file;   CString sss;  char ccc[100];  DWORD o=0;  int ol=0;  file.Open("ts.txt",CFile::modeRead);  while...
  • 本程序利用vc6.0为平台,读取txt文件数据,然后根据数据画出曲线图。 MFC/VC
  • vc++从txt文件读取数据

    万次阅读 2015-11-09 21:04:29
    数值分析课上老师说要将数据写在txt文件上,然后让程序从txt文件读取数据。让本来C++已经遗忘了很久的我们无从下手,在网上也查看了很多,发现大多都是扯淡,放在VC++编辑器上发现并不能运行,不知道是我的问题,...
  • vc 各种读取txt文件的方法

    千次阅读 2012-06-16 10:30:11
    一、  CStdioFile 二、  FILE* f = fopen("file name", "mode");  char buff[size];... fread(buff, size, 1, f);... //用MFC读文件 ... CFile file("yourfile.txt",CFile::modeRead);  char *pBu
  • CStdioFile读写文件文档 VC6编写 代码完整, 打开直接可以编译使用
  • VC 读写XML文件实例运用

    热门讨论 2013-12-26 15:00:41
    VC项目中实现读写XML文件,包中有两个工程启动文件--VC6的.dsp和VS2010的.sln文件。代码中注释详细,包中另附“xml学习笔记.txt”文档,总结了针对xml读写操作的常用函数。
  • VC读取TXT文档,并且显示修改

    热门讨论 2010-08-09 16:33:31
    VC编写的读取TXT文档的程序,里面包括好几个程序,各个稍微有点不同,有利于一步一步的学习
  • VC编程读取文本数据

    千次阅读 2019-02-02 11:30:47
    VC编程读取文本数据
  • #include #include #include using namespace std; ...char txt[MAX]; ifstream iFile;//标准输入流 iFile.open(szSaveIniPath.GetBuffer(MAX),ios::binary); iFile.seekg (0, ios::
  • 自己写的txt文件读取并绘制曲线程序,运行后点击右下角的按钮即可

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,147
精华内容 4,058
关键字:

vc读取txt文件