磁盘文件读入数组,处理后输入磁盘文件和屏幕

来源:互联网 发布:dnz端口 编辑:程序博客网 时间:2024/05/18 03:50


#include<stdio.h>
#include<stdlib.h>
#define N 112789   //元素个数不超过N
void file_to_array(FILE *fp1,FILE *fp2);
int main()
{
FILE *fp1,*fp2;  
fp1=fopen("F:\\codes_v1\\data\\data_new3\\test.txt", "rb");//打开文件F:
fp2=fopen("F:\\codes_v1\\data\\out.txt", "w");
file_to_array(fp1,fp2);
fclose(fp1);//关闭文件
fclose(fp2);
}
////函数功能:将文件内容转化为二维数组,其每一行表示14个类别对应情况
//输入为:1 15 2 3 15 4 5 6 15  输出为:
//1 0 0 0 0 0 0 0 0 0 0 0 0 0 
//0 1 1 0 0 0 0 0 0 0 0 0 0 0 
//0 0 0 1 1 1 0 0 0 0 0 0 0 0 


void file_to_array(FILE *fp1,FILE *fp2)
{
int a[N]={0};
int a1[3][14]={0};//3106个样本,14个类别
int i=0;
int j=0;
int count=0;//数组中所有元素的个数
int num_row=0;//行数
while( fscanf(fp1,"%d ",&a[i]) == 1 ) i++;//以空格为分隔符,以整数的形式保存到数组

for(i=0;i<N;i++)//计算元素的个数
{
if(a[i]>0)count++;
}
printf("count=%d \n",count);

for(i=0;i<count;i++)
{
if(15 == a[i]) num_row++;//用15表示一行结束
else a1[num_row][a[i]-1]=1;//a[i]的值对应的类置1
}
for(i=0;i<3;i++)//输出此二维矩阵到磁盘文件
{
for(j=0;j<14;j++)fprintf(fp2,"%d ",a1[i][j]);
fprintf(fp2,"%c",'\n');
}
for(i=0;i<3;i++)//输出此二维矩阵到屏幕
{
for(j=0;j<14;j++)printf("%d ",a1[i][j]);
printf("\n");
}
printf("\n");
}
0 0
原创粉丝点击