编程练习第十二题,图形输出。
本题我用随机函数rand()产生随机数,进行文件的输入输出操作。仅供参考。
#include<stdio.h>
#include<stdlib.h>
#define ROWS 20
#define COLS 30
int main(void)
{
FILE *fp;
int i,j,n=0;
int rand_number[ROWS][COLS];
int numbers[ROWS][COLS];
char crt[10]={' ','!','@','#','$','%','^','&','*','~'};
//随机产生数字
for(i=0;i<ROWS;i++)
for(j=0;j<COLS;j++)
rand_number[i][j]=rand()%9+1;
printf("The rand numbers is here: \n");
//编译输出到屏幕
for(i=0;i<ROWS;i++)
for(j=0;j<COLS;j++)
{
printf(" %d",rand_number[i][j]);
n++;
if(n==30)
{
putchar('\n');
n=0;
}
}
//编译输出到文件中
if((fp=fopen("files.txt","w"))==NULL)
{
fprintf(stderr,"The file is not exist.");
exit(EXIT_FAILURE);
}
for(i=0;i<ROWS;i++)
for(j=0;j<COLS;j++)
{
fprintf(fp," %d",rand_number[i][j]);
n++;
if(n==30)
{
fprintf(fp,"\n");//写入文件时的换行。
n=0;
}
}
if(fclose(fp)!=0)
fprintf(stderr,"Error in closing files\n");
//一个文件打开来完成一个任务后,要随即关闭该文件。才可以再次打开文件进行下一个任务操作!!!
//再从创建的文件中读出数据。
if((fp=fopen("files.txt","r"))==NULL)
{
fprintf(stderr,"The files is not open.");
exit(EXIT_FAILURE);
}
printf("Here is get numbers in files.txt:\n");
/*从文件读出到屏幕上面*/
for(i=0;i<ROWS;i++)
for(j=0;j<COLS;j++)
fscanf(fp,"%d",&numbers[i][j]);
for(i=0;i<ROWS;i++)
for(j=0;j<COLS;j++)
{
printf(" %d",numbers[i][j]);
n++;
if(n==30)
{
putchar('\n');
n=0;
}
}
/*此时文件的数据已经读出到numbers数组里面了,这时再给数字赋字符。*/
printf("Here is graphics from numbers:\n");
for(i=0;i<ROWS;i++)
for(j=0;j<COLS;j++)
{
if(0==numbers[i][j])
numbers[i][j]=crt[0];
if(1==numbers[i][j])
numbers[i][j]=crt[1];
if(2==numbers[i][j])
numbers[i][j]=crt[2];
if(3==numbers[i][j])
numbers[i][j]=crt[3];
if(4==numbers[i][j])
numbers[i][j]=crt[4];
if(5==numbers[i][j])
numbers[i][j]=crt[5];
if(6==numbers[i][j])
numbers[i][j]=crt[6];
if(7==numbers[i][j])
numbers[i][j]=crt[7];
if(8==numbers[i][j])
numbers[i][j]=crt[8];
if(9==numbers[i][j])
numbers[i][j]=crt[9];
}
for(i=0;i<ROWS;i++)
for(j=0;j<COLS;j++)
{
printf(" %c",numbers[i][j]);
n++;
if(n==30)
{
putchar('\n');
n=0;
}
}
if(fclose(fp)!=0)
fprintf(stderr,"Error in closing files\n");
//输出的字符图形输出到创建的文件中
if((fp=fopen("files.txt","a"))==NULL)//a为在已有的文件中追加内容。
{
fprintf(stderr,"The files is not open.");
exit(EXIT_FAILURE);
}
for(i=0;i<ROWS;i++)
for(j=0;j<COLS;j++)
{
fprintf(fp," %c",numbers[i][j]);
n++;
if(n==30)
{
fprintf(fp,"\n");//写入文件时的换行。
n=0;
}
}
if(fclose(fp)!=0)
fprintf(stderr,"Error in closing files\n");
return 0;
}