C中采用的主要是文件指针的办法,C++中对文件的操作主要运用了“文件流”(即非标准的输入输出)的思想

eg1":

#include<stdio.h>
//...
FILE* fp=fopen("1.txt","w");
if(fp!=NULL){ //查看文件是否创建成功(若文件未打开成功则会返回NULL)
fprintf(fp,"hello world");
fclose(fp); //该语句若忘记,则可能在程序运行前并看不到文件内容,因为缓冲区内容未刷新到目的地,也可能造成数据丢失
}

eg2

#include <stdio.h>   //FILE,fopen(),fprintf(),fscanf(),fclose(),printf()
#include <stdlib.h> //system()
int main()
{
int i = ;
float f = 13.14159;
char str[] = "Miranda-lym";
//写文件,不存在则创建
FILE* fp1 = fopen("out.txt", "w");
if (fp1 != NULL) {
fprintf(fp1, " %d\n %.2f\n %s\n", i, f, str);
fclose(fp1);
}
//查看写好的文件
system("out.txt");
int ii = ;
float ff = ;
char str2[] = "";
//读文件
FILE* fp2 = fopen("out.txt", "r");
if (fp2 != NULL) {
fscanf(fp2, "%d%f%s", &ii, &ff, str2);
fclose(fp2);
}
//将读出的内容显示
printf(" i = %d\n f = %.2f\n str = %s\n", ii, ff, str2);
return ;
}

fprintf() 比 printf() 多第一个参数,格式化后将输出到一个stream,通常是到文件,其原型如下:

int fprintf( FILE *stream, const char *format, ... );
fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指定的文件.如: fprintf( out, "Hello %s\n", name );

fopen() 原型:FILE *fopen(const char *filename,const char *mode),fopen实现三个功能:为使用而打开一个流,把一个文件和此流相连接,给此流返回一个FILE指针。mode表示打开状态的字符串,"r" 以只读方式打开文件,"w" 以只写方式打开文件;"a" 以追加方式打开文件;"r+" 以读写方式打开文件,如无文件出错;"w+" 以读写方式打开文件,如无文件生成新文件

fclose()的功能就是关闭用fopen()打开的文件,原型:int fclose(FILE *fp); //成功返回0,失败返回EOF。

在程序结束时一定要记得关闭打开的文件,不然可能会造成数据丢失的情况


C++文件流:

fstream  // 文件流
ifstream   // 输入文件流
ofstream  // 输出文件流

在fstream类中,成员函数open()实现打开文件的操作,从而将数据流与文件进行关联,通过ofstream,ifstream,fstream的对象来进行对文件的读写操作

#include<fstream>
using namespace std;
//...
fstream fout("1.txt",ios::out);
if(fout.is_open()){ //作用同上,只是is_open的返回值是布尔型
fout<<"hello world"<<name<<endl;
//...
fout.close();
}

打开文件的方式在ios类(所以流式I/O的基类)中定义,有如下几种方式

ios::in 为输入(读)而打开文件
ios::out 为输出(写)而打开文件
ios::ate 初始位置:文件尾
ios::app 所有输出附加在文件末尾
ios::trunc 如果文件已存在则先删除该文件
ios::binary 二进制方式

这些方式是能够进行组合使用的,以“或”运算(“|”)的方式, 如fout.open("Hello.txt", ios::in|ios::out|ios::binary);

C和C++中文件读写的区别的更多相关文章

  1. mmap和普通文件读写的区别和比较 & mmap的注意点

    参考 http://www.cnblogs.com/huxiao-tee/p/4660352.html 对linux文件系统不了解的朋友,请参阅我之前写的博文<从内核文件系统看文件读写过程> ...

  2. python中文件读写

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  3. C++中文件读写的操作

    在C++中读读写文件一般指的就是磁盘中的文本文件和二进制文件: 文本文件:以字符序列组成的文件 二进制文件:由二进制组成的文件 读写文件采用ofstream和ifstream文件流,两者可用头文件&l ...

  4. Win8 Metro中文件读写删除与复制操作

    Win8Metro中,我们不能在向以前那样调用WIN32的API函数来进行文件操作,因此,下面就来介绍一下Win8 Metro中文件的读写操作. 1 Windows 8 Metro Style App ...

  5. 快速入门Python中文件读写IO是如何来操作外部数据的?

    读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...

  6. Python中文件读写之 w+ 与 r+ 到底有啥区别?

    其实r 是只读,只能读不能写,这是很明确的,但是r+是可读写,变成r+后还没太明白到底加了什么,还是照样写不了,有没有这样的体验呢,如下代码,只读时 f = open("test.txt&q ...

  7. Python中文件读写read,readline,readlines函数的区别?

    read 每次会读取整个文件 readline 每次读取一行信息 readlines 读取整个文件返回一个列表,列表每个元素代表一行

  8. (原)Eclipse的java中文件读写

    1 在<uses-sdk…/>下面添加permission <uses-sdk android:minSdkVersion="16" android:target ...

  9. python 文件读写模式区别,以及如何边写入边保存flush()

    如表: 模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追加写 a+ 可读可写 创建 否, ...

随机推荐

  1. OpenCV-Python在图片上输出中文

    OpenCV中在图片上输出中文一般需要借助FreeType库实现.FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件.但使用FreeType ...

  2. Network Saboteur (深搜递归思想的特殊使用)

    个人心得:对于深搜的使用还是不到位,对于递归的含义还是不太清楚!本来想着用深搜构成一个排列,然后从一到n分割成俩个数组,然后后面发现根本实现不了,思路太混乱.后来借鉴了网上的思想,发现用数组来标志,当 ...

  3. 基于JQ的简单左右轮播图

    // 轮播图 主要实现思想: a.第一层div,设置overflow为hidden. b.里面是一个ul,每个li里面有个img或者为每个li设置背景图片也可以. c.li设置为左浮动,排成一行,还有 ...

  4. spring中JavaConfig相关的注解

    在spring3.0中增加配置spring beans的新方式JavaConfig,可以替换spring的applicataion.xml配置.也即@Configuration对等<beans/ ...

  5. mina在spring中的配置多个端口

    本次练习中是监听2个端口 applicationContext-mina.xml: <?xml version="1.0" encoding="UTF-8" ...

  6. Python Django框架 补充

    Django REST framework ORM框架整理 Django框架 app间互借models字段的操作 ORM数据库操作补充:models中的一对一操作.过滤.事务 Django model ...

  7. linux下不用空格执行带参数的5种姿势

    在搞安全的时候经常会遇到代码/命令执行,不能用空格的情况,总结了几种的绕过方法. 1.!! [root@iZ28wg1kditZ tmp]# pwd /tmp [root@iZ28wg1kditZ t ...

  8. elasticsearch 概念与架构(3)

    转自:https://devops.taobao.com/ Node(节点):单个的装有Elasticsearch服务并且提供故障转移和扩展的服务器. Cluster(集群):一个集群就是由一个或多个 ...

  9. 浅谈Android四大组建之一Service---Service的创建

    Service是安卓四大组件之一,个人觉得Service的使用还是比较简单的额,可以理解为看不见的Activity,因为Service的使用和Activity十分接近.启动啊,生命周期等,都十分简单. ...

  10. python之Dict和set类型

    Dict就是一种key:value的表格: >>> d = { 'Adam':95, 'Lisa':85, 'Bart':59, 'Paul':75 } >>> p ...