請在第一週做業的基礎上,繼續完成:找出給定的文件中數組的最大值及其對應的最小下標(下標從0開始)。並將最大值和對應的最小下標數值寫入文件。
輸入:
請創建以本身英文名字命名的txt文件,並輸入數組元素數值,元素值之間用逗號分隔。
輸出
在不刪除原有文件內容的狀況下,將最大值和對應的最小下標數值寫入文件。數組
#include<stdio.h> #include<stdlib.h> int main() { FILE *fp; //定義文件指針 int a[10]; int i, t=0, m=0; if((fp=fopen("F:\\yangzixin.txt","r+"))==NULL) //打開文件 { printf("File open error!\n"); exit(0); } for(i = 0; i < 6; i++) { fscanf(fp,"%d%c", &a[i]); //從文件讀入數據保存 printf("%d%c ", a[i]); } t = a[0]; for(i = 0; i < 6; i++) { if(a[i] > t) { t = a[i]; m = i; } } printf("\n%d %d", t, m); fprintf(fp,"\n%d %d", t, m); //在文件中輸出最大值和最小下標 if(fclose(fp)) //關閉文件 { printf("Can not close the file!\n"); exit(0); } return 0; }
問題1:首先徹底按照書上來的,沒弄清楚要從文件中怎麼保存數據到屏幕上,還有文件打開錯誤的緣由
解決方法:第一次代碼編譯出來什麼都沒有,以後又認真看了書上內容,改正了那一個錯誤,還有在代碼中要顯示「/」要輸入兩個函數
問題2:按書上用的「r」,可是要用的不是「r」
解決方法:本身上百度查了「r」和「r+」的區別,發現「r」是隻讀,「r+」是讀和寫,咱們的代碼裏還須要寫,因此咱們不能用「r」,只能用「r+」和「a+」學習
問題3:開始照書上的寫好以後,而後直接把上週代碼運用進去,編譯出現一大串數字
解決方法:仔細檢查,發現沒將變量n改爲數字6,致使編譯錯誤設計
問題4:不知道怎麼將文件中的逗號引入,在屏幕上怎麼顯示
解決方法:試了多種方法最後在輸入輸出數據時後面加上一個字符,編譯運行出來才行。指針
此次主要學習到了fscanf和fprintf的用法,此次的做業須要注意注意不少細節,好比轉行等,還有注意exit(0)和exit(1)的用法。調試
本週主要學習了文件,fopen、fclose、fscanf和fprintf等函數的使用,分別表明打開文件、關閉文件、從文件讀入數據保存變量、在文件中顯示要輸出的值,我以爲這是一個比較難弄懂的重點,另外初步瞭解了指針,如FILE *fp,這是定義文件指針,看起來要弄懂仍是比較費勁的,因此這一章的內容還要好好學習。我以爲聽課的時候我聽得沒有太懂,可是後來下課後本身看着書這題目,感受沒有想象中的那麼難,因此在任什麼時候候都不能懶惰,不能認爲它難了就不去碰它。code