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+ 可读可写 创建 否, ...
随机推荐
- Java进阶知识点2:看不懂的代码 - 协变与逆变
一.背景 要搞懂Java中的协办与逆变,不得不从继承说起,如果没有继承,协变与逆变也天然不存在了. 我们知道,在Java的世界中,存在继承机制.比如MochaCoffee类是Coffee类的派生类,那 ...
- Swap Adjacent Elements
You have an array a consisting of n integers. Each integer from 1 to n appears exactly once in this ...
- 【LeetCode】025. Reverse Nodes in k-Group
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. k ...
- NSString *const 和 const NSString * 的区别
1.变量存储的指针可变,变量存储的值不可变 //A modifiable pointer to a constant NSString (its value can't be modified) &q ...
- linux开发核心理解
目录 授权 致谢 序言 更新纪录 导读 如何写作科技文档 I. 气候 1. GUI? CLI? 2. UNIX 缩写风格 3. 版本号的迷雾 4. Vim 还是 Emacs 5. DocBoo ...
- 在ARM模式下捕获VM并创建新VM
在ASM模式下,可以通过Manage Portal上捕获VM的Image,并创建新的VM.在ARM模式下,在Portal上目前还没有这个功能,要做VM镜像的捕获和创建新的VM需要用powershell ...
- 关于64位操作系统使用C#访问注册表失败的问题
通过C#的注册表类 Registry.GetValue 进行访问时,其返回值一直为空.然后认真检查检查再检查了注册表路径,发现路径没有一点问题,不说废话,上代码: if (Registry.GetVa ...
- 任意输入3个数,判断能否组成三角形(python)
任意输入3个数,判断能否组成三角形. 三角形:两边之和大于第三边 直角三角形:勾股定理 代码如下: # 输入合法性检查,必须输入正数,不支持科学计数法'''try: <语句>except ...
- PostgreSQL 9.5 客户端认证
PostgreSQL 9.5 客户端认证 当一个客户端应用连接一个数据库服务器时,它将指定以哪个PostgreSQL 数据库用户名连接,就像我们以一个特定用户登录一台 Unix 计算机一样.在 SQL ...
- java中内部类的讲解
java中有一个内部类的概念,由于之前一直比较忙,没有单独拿出时间总结一下,今天我就把内部类的相关知识进行一下汇总,如果有不足之处,欢迎批评指正. 1)java内部类的概念. 在一个类的的 ...