char const* filename="D:/hello.txt";

路径名使用的是“/”或者使用 转义字符“\\”;

"fopen",

  FILE *fp=fopen(char const *name,char const mode);

  e.g:FILE *fp = fopen(filename,"wb");

  打开文件流,name为要打开文件的路径,如这里的filename;mode 为对文件的操作模式,通常使用:“wb”(写操作),“rb”(读操作);

  如果打开文件成功返回一个指向FILE结构的指针;否则,返回一个NULL指针;

"fclose",

  fclose(FILE* name);

  关闭文件流,name 为之前打开的文件指针,如这里的filename;

  如果执行成功返回0,否则返回EOF;

  e.g: fclose(fp);

"ftell",

  long ftell(FILE *stream);

  表示返回下一个读取或者写入将要开始的位置距离文件起始位置的偏移量。

  e.g:

    fseek(fp,5,SEEK_SET);
   int i = ftell(fp);    //这里i=5;

"fseek",

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

  表示对将要写入的位置的定位;

  stream为打开的文件指针,filename;

  offset为距离from参数的相对距离;

  from为定位的基准;模式为:SEEK_SET(从流的起始位置起,往后offset个字节)

               SEEK_CUR(从流的当前位置起,往前往后offset个字节)

               SEEK_END(从流的末尾起,往前往后offset个字节)

  e.g:

      fseek(fp,-5,SEEK_END);

      fread(buf,1,4,fp);

"fgets",

  char *fgets( char  *buffer, int  buffer_size, FILE*  stream);

  从指定的stream读取字符,并复制到buffer中。当读取到一个换行符号“\n”并存储到缓冲区之后就不在读取;如果缓冲区内存储的字符数达到buffer_size-1个时,同样停止读取。

  下次调用fgets将从流的下一个字符开始读取。在任何一个情况下,一个NUL字节降被添加到缓冲区所存储数据的末尾,使之成为一个字符串;

  如果失败,fgets返回一个NULL指针;否则返它的第一个参数(指向缓冲区的指针);

  e.g:

    char* ret = fgets(buf,512,fp);  //成功,则返回buf指针;

"fprintf",

  int fprintf(FILE *stream,char const *format,......)    // 将数据转换成字符串文本,并写入stream文件中;

    等于:

    char buf[512];

    sprintf(buf,"%s\n",fp);

    fwrite(buf,1,strlen(line),fp);

  e.g :  fprintf(fp, "%s\n", buf);

"fwrite",

  size_t  fwrite(const void* buffer, size_t  size, size_t  count, FILE* stream);

  size 恒为1;

  将buffer中的 count个字节写入到文件steam中;

  e.g:

  fwrite(buf,1,4,fp);

"fread",

  size_t    fread(const void* buffer,size_t size, size_t count ,FILE *stream)

size恒为1;  从stream文件中读取count个字节存放buffer中;

  返回值为:实际读取到的字节个数;

  e.g:

    fread(buf,1,4,fp);

"feof",

  int feof(FILE *stream);

  如果流当前处于文件尾,feof函数返回真。

  e.g:

    while (!feof(fp))
    {

      char* ret = fgets(buf, 512, fp);
      if (ret)
      {
        printf("got::%s", ret);
      }
    }

举例:

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std; int main()
{
const char* filename = "d:/aaa.txt";
FILE* fp = fopen(filename, "wb"); if (fp == NULL)
{
printf("failed to open file\n");
return -;
} char buf[] = {};
int m, n;
printf("请输入两个整数:");
scanf("%d%d",&m,&n); sprintf(buf,"m=%d,n=%d",m,n);
fwrite(buf,, strlen(buf), fp); //fprintf(fp,"f=%d,g=%d",m,n);
fclose(fp);
system("pause");
return ;
}

 

 

文件流:"fopen","fclose",“ftell”"fseek","fgets","fprintf" ,“feof”,"fwrite","fread"的更多相关文章

  1. 文件操作 fopen() fclose()

    #define _CRT_SECURE_NO_DEPRECATE /*取消scanf,printf不安全之类的错误提示*/ /* fopen example */ #include <stdio ...

  2. PHP 文件处理----fopen(),fclose(),feof(),fgets(),fgetc()

    fopen() 函数用于在 PHP 中打开文件. 打开文件 fopen() 函数用于在 PHP 中打开文件. 此函数的第一个参数含有要打开的文件的名称,第二个参数规定了使用哪种模式来打开文件: < ...

  3. 移动文件流的读写指针---fseek

    函数原型:int fseek(FILE *stream,long offset,int origin) stream:文件指针, offset:偏移量,正数表示正向偏移,负数表示负向偏移.origin ...

  4. c语言中的文件流

    一.打开和关闭文件 #include int main( void ) { FILE* pReadFile = fopen( "E:\\mytest.txt", "r&q ...

  5. FILE文件流的中fopen、fread、fseek、fclose的使用

    FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满 ...

  6. C语言基础(20)-文件操作(fopen,getc,fclose)

    一.文件操作 读文件的顺序: 1.先打开文件 2.读写文件 3.关闭文件 1.1 fopen FILE *fopen( const char *path, const char *mode ); 函数 ...

  7. 函数fgets和fputs、fread和fwrite、fscanf和fprintf用法小结 (转)

    函数fgets和fputs.fread和fwrite.fscanf和fprintf用法小结 字符串读写函数fgets和fputs 一.读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符 ...

  8. Linux 文件流管理

    1. 打开/关闭文件 1). 打开文件 / fopen 作用: 打开一个文件,将其与文件流联系起来,方便后续的操作 头文件: #include <stdio.h> 函数原型: FILE * ...

  9. (C/C++学习)2.C语言中文件流操作基本函数总结

    函数所在头文件:stdio.h 说明:前半部分主要为对各个文件流操作函数的例举,后半部分着重于上机运行分析.文中部分引用自王桂林老师的C/C++课件. 1.FIELE *fopen(const cha ...

随机推荐

  1. 雅礼集训 Day7 T1 Equation 解题报告

    Reverse 题目背景 小\(\text{G}\)有一个长度为\(n\)的\(01\)串\(T\),其中只有\(T_S=1\),其余位置都是\(0\).现在小\(\text{G}\)可以进行若干次以 ...

  2. POJ3717 Decrypt the Dragon Scroll

    Description Those who have see the film of "Kong Fu Panda" must be impressive when Po open ...

  3. java.net.BindException: Address already in use: JVM_Bind <null>:8080错误

    今天打开myeclipse出现java.net.BindException: Address already in use: JVM_Bind <null>:8080错误 从网上搜了一下大 ...

  4. Eclipse使用Maven内置插件不需要安装Maven

    首先修改eclipse项目中maven的路径,默认在C盘,修改路径例如 在d盘创建文件夹-D:- |---m2 |--repository |--setting.xml 没有文件夹和文件要自己新建,如 ...

  5. 新blog开张!

    以后不出意外就只在新的blog更新了! hexo搭建的新blog 然后的然后是继续奋斗!

  6. Vijos P1007 绕钉子的长绳子

    绕钉子的长绳子 背景 平面上有N个圆柱形的大钉子,半径都为R,所有钉子组成一个凸多边形. 现在你要用一条绳子把这些钉子围起来,绳子直径忽略不计. 描述 求出绳子的长度 格式 输入格式 第1行两个数:整 ...

  7. log4net日志分割,按大小分割

    最近写了一个socket通信的手表在线服务端,在日志方面,记录下Log4net日志分割 1.引入log4net.dll 2.web.config添加configsection handler 映射: ...

  8. cocos2d programming guide 翻译 引导页(完结)

    http://bbs.tairan.com/article-25-1.html  Cocos2d官方入门指导 原文地址:http://www.cocos2d-iphone.org/wiki/doku. ...

  9. (十二)C语言双指针的常见用法

    1.用作函数的返回值,比较常见的是返回分配的堆内存地址. 下面用一个例子进行说明下: /******************************************************** ...

  10. VS2015开发的C++应用如何不依赖Visual C++ 2015 redistributable?

    1,“项目属性,C/C++,代码生成”,“运行库改”为“多线程(/MT)”.* MT开头的是静态引用,MD开头的是动态引用,d结尾的是Debug调试版本,没有d的是Release发布版本,所以就一 共 ...