一、C语言版
在C语言中stdio.h头文件里包含了文件读写操作。主要是通过FILE*指针进行文件操作。通过fscanf和fprintf对文件进行格式化的读写,或通过fread 和 fwrite对文件进行二进制读写。(在数据量比较大时,一般建议用后者,因为格式化在输入时需要将ASCII码转为二进制形式,在输出时需要将二进制形式转为ASCII码,花费较大系统时间。fread 将文件的内容直接读入到一个指针中,fwrite将一个结构体的内容存放到文件中。
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
size表示针对的单个单元或结构体的大小的字符数。
count表示单元的个数。 (当然只要size*count积一定即可,可以让size赋给count,然后count赋给size)
和C++不同之处在于:
FILE * fin=fopen("文件地址“,"r”);// 需要将函数的返回值赋给一个指针变量
fscanf(fin,"%d %d",&Row,&Column); // 需要注意的是需要用&,传递地址
fclose(fin);//是将FILE型指针 fin传给fclose函数
二、C++版
#include <fstream> 引入文件操作头文件
ofstream 对于输出,ifstream对于输入,fstream既可输出又可以输入。
ifstream fin;
fin.open("E://C++//FileControl//FileControl//Debug//Matrix.txt");//调用成员函数
fin>>Row>>Column;//直接按流输出
fin.close(); //调用成员函数关闭
// FileControl.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <fstream> //For C++ File Control
#include <iostream>
#include <stdio.h> //For C File Control
using namespace std;
/* You Can Change the Size to Meet your needs*/
#define MATRIX_LARGEST_SIZE 500 //MATRIX_ROW * MATRIX_COLUMN <= MATRIX_LARGEST_SIZE
/*here you can choose use C OR use C++ to realize the file control operation */
#if 1
#define C_Mode
#endif
#if 0
#define CPlusPlus_Mode
#endif
int _tmain(int argc, _TCHAR* argv[])
{
#ifdef CPlusPlus_Mode
int Row, Column;
int Matrix[MATRIX_LARGEST_SIZE];
ifstream fin;// input file
ofstream fout;//output file
/*you can change the File String to your file location
ATTENTION: should be two '/'-->// as the fileFolder seperate
*/
fin.open("E://C++//FileControl//FileControl//Debug//Matrix.txt");
fin>>Row>>Column;
cout<<"Row:"<<Row<<"/tColumn:"<<Column<<endl;
/*
Read All the Matrix Element Into the Matrix int array
*/
for(int i=0;i<Row;i++)
{ for(int j=0;j<Column;j++)
{
fin>>Matrix[i*Column+j];
}
}
/*
we print the Matrix in the Console
*/
for(int i=0;i<Row;i++)
{
for(int j=0;j<Column;j++)
{
cout<<Matrix[i*Column+j]<<"/t";
}
cout<<endl;
}
/*
You can write the Matrix to a file
*/
fout.open("E://C++//FileControl//FileControl//Debug//OutputCPlusPlus.txt");
for(int i=0;i<Row;i++)
{
for(int j=0;j<Column;j++)
{
fout<<Matrix[i*Column+j]<<"/t";
}
fout<<endl;
}
fin.close();
fout.close();
cin>>Row;// I add this just want the Application to stop here~~~So you can see the output in the console.
#endif
#ifdef C_Mode
int Row=0, Column=0;
int Matrix[MATRIX_LARGEST_SIZE];
FILE * fin;// input file
FILE * fout;//output file
/*you can change the File String to your file location
ATTENTION: should be two '/'-->// as the fileFolder seperate
*/
fin=fopen("E://C++//FileControl//FileControl//Debug//Matrix.txt","r");
fscanf(fin,"%d %d",&Row,&Column);
printf("Row:%d/tColumn:%d/n",Row,Column);
/*
Read All the Matrix Element Into the Matrix int array
*/
for(int i=0;i<Row;i++)
{ for(int j=0;j<Column;j++)
{
fscanf(fin,"%d",&Matrix[i*Column+j]);
}
}
/*
we print the Matrix in the Console
*/
for(int i=0;i<Row;i++)
{
for(int j=0;j<Column;j++)
{
printf("%d/t",Matrix[i*Column+j]);
}
printf("/n");
}
/*
You can write the Matrix to a file
*/
fout=fopen("E://C++//FileControl//FileControl//Debug//OutputC.txt","w");
for(int i=0;i<Row;i++)
{
for(int j=0;j<Column;j++)
{
fprintf(fout,"%d/t",Matrix[i*Column+j]);
}
fprintf(fout,"/n");
}
fclose(fin);
fclose(fout);
scanf("%d",Row);
#endif
return 0;
}