C primier plus 文件的输入/输出

编程练习第十二题,图形输出。

本题我用随机函数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;
}

猜你喜欢

转载自blog.csdn.net/LPJLBJ/article/details/84147436