第1个回答 2009-07-25
关键代码
#include <fstream>
ifstream fin("D:\\data.txt");
//如同普通cin一样使用fin,得到数据
fin.close();
ofstream fout("D:\\data.txt");
//如同普通cout一样使用fout,输出数据
fout.close();
需要注意的是,txt文档中矩阵大小未知,提供三个方案
一:在自主写代码的时候,在txt文档的第一行加两个数据,说明i和j,可以省下很多事
二:在txt文档规定一定要那么样的话,就用翻翻STL大全,查查流下面的方法,通过识别换行符统计行列
三:在能事先确定一定是方阵的情况下,可以先弄一个零时一维数组数组,比如接收数据,然后再把数组长度开方;
第2个回答 2009-07-25
c++中输出和输入导屏幕和键盘的类别声明包含再标题文件<iostream.h>中,而磁盘类文件的 I/O则声明再包含标题文件<fstream.h>内。
输入和输出格式:
输出到磁盘 ofsteam 识别字(“文件名”)
从磁盘读文件 ifsteam 识别字("文件名“)
整数数据的输入输出
整数数据存储再磁盘内,每个文字各占一个字节。
例如:
#include <fstream.h>
#include <iostream.h>
//计算文件中有多少行
int getrowcount()
{
int rowcount=-1;
const MAX=200;
char buffer[MAX];
ifstream infile("data.txt");
while(infile)
{
infile.getline(buffer,MAX);
rowcount++;
}
infile.close();
return rowcount;
}
//写文件
void write()
{
int i=0;
ofstream outfile("data2.txt"); //写文件
for(i=0;i<10;i++)
outfile<<i<<" "; //空格是为了避免数值连接在一起加上去的,
outfile.close();
cout<<"写文件成功!"<<endl;
}
//读文件
void read()
{
int data;
ifstream infile("data.txt"); //读文件
for(int i=0;i<10;i++)
{
infile>>data ; //读数据的时候因为数据间有一个空格才能完整的读出
cout<<data<<" "; //输出到屏幕,加上空格是为了分开数字
}
infile.close();
cout<<endl<<"读文件完毕!"<<endl;
}
void main()
{
int rows=0;
rows=getrowcount();//计算文件中有多少行
cout<<"文件中共有"<<rows<<"行"<<endl;
read(); //读文件
write(); //写文件
}
浮点数
浮点数因为有小数点,在存储数据时与整数相同,只要每个数据加上一个空格就可以区隔相邻的数据
第3个回答 2009-07-25
我用的fread和fwrite函数,在D盘建了个txt文件"array.txt",里面有矩阵,运行程序自己写个新矩阵,再输入到原文件中,看看这个可以不
/**
*读写文件
**/
#include <iostream>
using namespace std;
int main()
{
FILE *pf;
char ch='\0';
char A[30]={'\0'};//保存文件矩阵的数组
char *p=A;//数组指针
int i=0;//计数器
pf=fopen("D:\\array.txt","r+");//打开文件用于读/写
fread(A,1,30,pf);//读文件内容到数组A
cout<<"请输入要更改的3*3的新矩阵:"<<endl;
//更改数组信息,当输入第3个换行符既3*3矩阵输入完毕后结束循环
while(1)
{
*p=getchar();
if(*p=='\n')
i++;
if(i>=3)
break;
p++;
}
fseek(pf,0,SEEK_SET);//文件定位,将要写出到文件的内容定位到文件开头以覆盖原文件内容
fwrite(A,1,30,pf);//写出新矩阵到文件
return 0;
}