C primier plus 檔案的輸入/輸出
阿新 • • 發佈:2018-12-08
程式設計練習第十二題,圖形輸出。
本題我用隨機函式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; }