C和C++中文件读写的区别
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++中文件读写的区别的更多相关文章
- mmap和普通文件读写的区别和比较 & mmap的注意点
参考 http://www.cnblogs.com/huxiao-tee/p/4660352.html 对linux文件系统不了解的朋友,请参阅我之前写的博文<从内核文件系统看文件读写过程> ...
- python中文件读写
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- C++中文件读写的操作
在C++中读读写文件一般指的就是磁盘中的文本文件和二进制文件: 文本文件:以字符序列组成的文件 二进制文件:由二进制组成的文件 读写文件采用ofstream和ifstream文件流,两者可用头文件&l ...
- Win8 Metro中文件读写删除与复制操作
Win8Metro中,我们不能在向以前那样调用WIN32的API函数来进行文件操作,因此,下面就来介绍一下Win8 Metro中文件的读写操作. 1 Windows 8 Metro Style App ...
- 快速入门Python中文件读写IO是如何来操作外部数据的?
读写文件是最常见的IO操作.Python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘, ...
- Python中文件读写之 w+ 与 r+ 到底有啥区别?
其实r 是只读,只能读不能写,这是很明确的,但是r+是可读写,变成r+后还没太明白到底加了什么,还是照样写不了,有没有这样的体验呢,如下代码,只读时 f = open("test.txt&q ...
- Python中文件读写read,readline,readlines函数的区别?
read 每次会读取整个文件 readline 每次读取一行信息 readlines 读取整个文件返回一个列表,列表每个元素代表一行
- (原)Eclipse的java中文件读写
1 在<uses-sdk…/>下面添加permission <uses-sdk android:minSdkVersion="16" android:target ...
- python 文件读写模式区别,以及如何边写入边保存flush()
如表: 模式 可做操作 若文件不存在 是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追加写 a+ 可读可写 创建 否, ...
随机推荐
- 怪盗基德的滑翔翼(还是最长x序列)
//怪盗基德的滑翔翼 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstri ...
- 下载安装tomcat至服务器
1.安装JDK之后,下载Tomcat:http://tomcat.apache.org/download-70.cgi选择下载32-bit/64-bit Windows Service Install ...
- java程序员图文并茂细说Unity中调用Android的接口
http://bbs.csdn.net/topics/391876421 最近做一个项目,为同事提供接口,能使他在Unity中调用Android中的函数来实现QQ登陆并获取用户信息.按照一些书上和一些 ...
- word 2007,以不同颜色突出显示文本的快捷键,highlight命令
命令:highlight 默认快捷键:Ctrl+Alt+H 查询或自定义快捷键的方法: 打开一个文档→单击左上角的office图标→word选项 左边的列表中选择自定义→在右边的窗口中,底部有个“ ...
- Oracle使用总结一
一.修改表名要修改索引以及主键 ALTER TABLE AFA_AUTH_FUNCTION RENAME TO BACK_AFA_AUTH_FUNCTION ----修改表名 alter table ...
- thinkphp <volist>标签中 <if> 判断的写法
thinkphp <volist>标签中 <if> 判断的写法 <volist name="data" id="vo"> & ...
- Python numpy函数:transpose()
transpose用于对高维数组进行转置,转置时候需要一个由轴编号组成的元组. 比如说三维的数组,那就对维度进行编号,也就是0,1,2:这样说可能比较抽象.这里的0,1,2可以理解为对shape返回元 ...
- DATAX动态参数数据传递
实例:ORACLE到ORACLE的数据传递 编写job.xml文件,添加变量参数 执行datax.py文件时记得带参数 格式:./datax.py –p"-Ddbname=*** -Di ...
- POJ2976(最大化平均值)
Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9329 Accepted: 3271 De ...
- Spring线程池由浅入深的3个示例
作者博客主页:http://blog.csdn.net/chszs 本文提供了三个Spring多线程开发的例子,由浅入深,由于例子一目了然,所以并未做过多的解释.诸位一看便知. 前提条件: 1)在Ec ...