您的位置:首页 > 编程语言 > C语言/C++

C/C++——打开文件读取数据的各种方式

2017-04-02 21:00 232 查看

打开文件

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

函数:open()

void open ( const char * filename,
ios_base::openmode mode = ios_base::in | ios_base::out );

void open(const wchar_t *_Filename,
ios_base::openmode mode= ios_base::in | ios_base::out,
int prot = ios_base::_Openprot);

参数: filename    操作文件名
mode        打开文件的方式
prot        打开文件的属性     //基本很少用到,在查看资料时,发现有两种方式


例子:

ofstream out;
out.open("data.txt", ios::in|ios::out|ios::binary)


fstream 流方法读数据

data.txt文件如下



1.读取方式: 逐词读取, 读词之间用空格区分

void readdatafromfileWBW()
{
ifstream fin("data.txt");
string s;
while (fin >> s)
{
cout << s << " ";//空格是为了避免数据都连在一块儿
}
cout << endl;
}


程序结果:(每个数都要读取一次)



2.读取方式: 逐行读取, 将行读入字符数组, 行之间用回车换行区分

void readdatafromfileLBL()
{
ifstream fin("data.txt");
const int LINE_LENGTH = 100;
char str[LINE_LENGTH];
while (fin.getline(str, LINE_LENGTH))
{
cout << "Read from file: " << str << endl;//要输出4次
}
}


程序结果:



3.读取方式: 逐行读取, 将行读入字符串, 行之间用回车换行区分

void readdatafromfileLBL()
{
ifstream fin("data.txt");
string s;
while (getline(fin, s))
{
cout << "Read from file: " << s << endl;//读取4次(4行)
}
}


程序结果:



4.读取时检测

void readfile(string filename){
ifstream fin(filename);
string s;
if (!fin)//检测文件输入是否正常
{
cout << "文件不能打开" << endl;
}
else{
while (fin >> s){
cout << s << ' ';
}
cout << endl;
}
fin.close();
}


C语言打开文件读取数据

C语言中要打开一个文件,需要调用fopen函数。

一、函数名:fopen

二、头文件:stdio.h

三、函数声明:

FILE * fopen(const char * path,const char * mode);

四、函数参数:

参数path字符串包含欲打开的文件路径及文件名,可以是相对路径,也可以是绝对路径。

参数mode字符串则代表着流形态。常见的mode形式有如下几种:

r 以只读方式打开文件,该文件必须存在。

r+ 以可读写方式打开文件,该文件必须存在。

rb+ 读写打开一个二进制文件,允许读写数据,文件必须存在。

w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

wb 只写打开或新建一个二进制文件;只允许写数据。

wb+ 读写打开或建立一个二进制文件,允许读和写。

ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

五、返回值:

如果操作成功,会返回一个非空的FILE*指针,该指针用于后续对文件的操作,如读、写、关闭等。

如失败返回NULL。

在C语言中提供了多种文件读写的函数:

·字符读写函数 :fgetc和fputc

·字符串读写函数:fgets和fputs

·数据块读写函数:freed和fwrite

·格式化读写函数:fscanf和fprinf

读取文件

程序1:

fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:字符变量=fgetc(文件指针);例如:ch=fgetc(fp);其意义是从打开的文件fp中读取一个字符并送入ch中。

#include <stdio.h>

int main()
{
FILE *fp;
char ch;
if ((fp = fopen("data.txt", "r") )== NULL){
printf("Cannot open file\n");
}
else{
ch = fgetc(fp);
while (ch != EOF){
putchar(ch);
ch = fgetc(fp);
}
}
fclose(fp);
return 0;
}


程序2:

fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。

#include <stdio.h>

int main()
{
FILE *fp;
char ch[100];
if ((fp = fopen("data.txt", "r") )== NULL){
printf("Cannot open file\n");
}
else{
while (fgets(ch, 100, fp)){
printf("%s",ch);
}
}
printf("\n");
fclose(fp);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐