本次課程與作業首次涉及到了c語言對自己檔案的控制,由於使用了指標,所以首觸指針對我們來說時比較麻煩而又困難,不過問題不會很大,因為書本上已經有乙個相關的模板供我們參考,但是需要仔細分析,謹慎入坑!不懼入坑!話不多說了,直接進入試題!
一.試題:
請在第一周作業的基礎上,繼續完成:找出給定的檔案中陣列的最大值及其對應的最小下標(下標從0開始)。並將最大值和對應的最小下標數值寫入檔案。
輸入:請建立以自己英文名字命名的txt檔案,並輸入陣列元素數值,元素值之間用逗號分隔。
輸出在不刪除原有檔案內容的情況下,將最大值和對應的最小下標數值寫入檔案。
二.分析:之前我們是在c語言編輯器中將題目要求完成,但是這次作業需要我們利用c語言編輯器對txt檔案編輯板進行控制以完成任務!
三.先依照教材上的模板寫上**:
#include#include#includeint main()
scanf("%d",&n);
for(i=0;imax)
max=a[i];
biao=i;
} fprintf("%d %d",max,biao);
if(fclose(fp))
return 0;
}
四.報錯截圖:
問題果然出現
五.問題解決:開啟檔案錯誤,此處也許是多數同學碰到的問題,無法開啟檔案,究其根源,花了半小時才發現if((fp=fopen("d:\wonzenkei.txt","r"))==null)後多了一「;」號
六.大功告成時才發現,如圖:
原有的txt文件已被更改,原輸入的幾個數已不存在,只輸出了題中要求的最大數與下標
六.問題解決:除錯**發現,主**中只有scanf,主**並沒有與txt文字檔案相掛鉤,也許這就是導致txt文字檔案內容被更改的原因
七.到最後的一步了,是時候要解決問題了!在**中鍵入fscanf(fp,"%d",&a[i])還有在for迴圈中需要鍵入fprintf(fp,"%d",a[i]);據本人推測因為使用c語言控制txt文字時,文字可能已經發生了更改,必須要使用該行**,才以確保c語言編輯框中的內容再次與txt文字相同步!
八 .再次附上修改後的**:
#include// 此處強烈建議大家使用c++萬能標頭檔案的開頭,因為它所包含的庫函式是很多的,所以使用該開頭能為大家省去很多的麻煩!!
int main()
scanf("%d",&n);
fprintf(fp,"%d\n",n);//此處一定需要fprintf,作用在第七步已說明
for(i=0;i九.思維流程圖:
十.總結:此處需要明白,fprintf,代表在資料txt文字中列印,fscanf代表在資料txt文字中輸入,其他暫時便沒有想到什麼東西了,閒餘時間再好好多學習一下相關的檔案指標方面知識吧
由於我名字粵語讀法是wonzenkei,所以我下意識地把檔名寫成了wonzenkei.txt
十 一.學習總結
使用vs2008實現C語言對Python2的擴充套件
1.c include python.h 包含了一些常用的標頭檔案 int fac int n static pyobject extest fac pyobject self,pyobject args return py buildvalue i fac num char reverse cha...
使用C語言對字串操作的分裝
使用c語言對字串操作的分裝 封裝字串函式 include 字串.h 拷貝字串 追加到乙個字串中 char mystrcat char dest,const char copystring else while copystring 0 dest 0 return first addr 在尾部增加字元...
舉例講解C語言對歸併排序演算法的基礎使用
基礎概念 百科是這麼描述歸併排序的 歸併操作 merge 也叫歸併演算法,指的是將兩個已經排序的序列合併成乙個序列的操作。設有數列 初始狀態 6 202 100 301 38 8 1 比較次數 nbcgacrkhsp i 1 6 202 100 301 8 38 1 3 i 2 6 100 202 ...