前言:
这是一个用C语言进行文件读取文件的一个控制台程序。
读取的文件为一个txt文件,里面存放一个5*5的矩阵,对文件的处理为矩阵乘2。
首先要想更好的理解这个代码必须了解计算机处理文件的具体过程:
文件读取的数据流。
本文参考谭浩强老师的至尊宝典---------《C语言程序设计》
开整:
1.定义文件指针;
FILE*in,*out;//定义文件指针
文件指针的本质是C语言声明好的一个结构体,程序中不用自己定义。
typedef struct { short level; //缓冲区,“满”或“空”的程度 unsigned flags; //文件状态的标志 char fd; //文件描述符 unsigned char hold; //如无缓冲区不读取字符 short basize; //缓冲区的大小 unsigned char *buffer; //数据缓冲区的位置 unsigned char *curp; //指针当前的指向 unsigned istemp; //临时文件,指示器 short token; //用于有效性的检验 } FILE;
2.然后用fopen函数将文件读入内存;
其中 r 为只读操作。
in=fopen(ADDRESS,"r"); if(in==NULL)//打开输入文件 { printf("无法打开文件!\n"); exit(0); }
其中ADDRESS为文件的一个路径
printf("输入打开文件位置:\n"); gets(ADDRESS);
3.读取到数组中并显示数组
while(!feof(in))//输入文件的结束标志 { for(i=0;i<N;i++)//读取到数组中 { for(j=0;j<N;j++) { fscanf(in,"%d",&a[i][j]);//每次读一个数,fscanf遇空格或换行结束,存在问题:原文件中空格未输出 } //fscanf(in,"\n");//同scanf换行 } } fclose(in);//关闭文件 for(i=0;i<N;i++) { for(j=0;j<N;j++) { printf("%.1d",a[i][j]); } printf("\n"); }
4.读入到另一个文件中
fopen(PUTFILE,"w");w为一个可写操作
printf("输入复制文件路径:\n"); gets(PUTFILE); out=fopen(PUTFILE,"w"); for(i=0;i<N;i++)//将数组写入copy.txt { for(j=0;j<N;j++) { fprintf(out,"%d ",a[i][j]); } fprintf(out,"\n"); } printf("COPY OK!"); fclose(out);
最后:
良心代码绝不留坑!复制粘贴既有效!复制粘贴既有效!(。・∀・)ノ
如果复制粘贴无效,你可以。。。。。。。。。。。。。。。顺着网线来砍我啊!