I/O FUNCTIONS 輸入 與 輸出. #include int fclose(FILE *); int feof(FILE *); int fflush(FILE *); int fgetc(FILE *); getchar(); char *fgets(char*, int, FILE*);

Slides:



Advertisements
Similar presentations
C Program Design Supplements 主講人:虞台文. Content Who takes the return value of main() ?
Advertisements

FCU, Department of ECE, IC Design Research Lab. TEL: # 4945 Pre-SIm , Post-Sim.
1 生物計算期末作業 暨南大學資訊工程系 2003/05/13. 2 compare f1 f2  只比較兩個檔案 f1 與 f2 ,比完後將結果輸出。 compare directory  以兩兩比對的方式,比對一個目錄下所有檔案的相 似程度。  將相似度很高的檔案做成報表輸出,報表中至少要.
Divide-and-Conquer. 什麼是 divide-and-conquer ? Divide 就是把問題分割 Conquer 則是把答案結合起來.
6-1 指標簡介 6-2 指標與陣列 6-3 動態配置記憶體 6-4 本章綜合練習
: Arrange the Numbers ★★★☆☆ 題組: Contest Archive with Online Judge 題號: 11481: Arrange the Numbers 解題者:李重儀 解題日期: 2008 年 9 月 13 日 題意: 將數列 {1,2,3, …,N}
Introduction to Java Programming Lecture 13 Classes I OO Programming.
:Word Morphing ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10508:word morphing 解題者:楊家豪 解題日期: 2006 年 5 月 21 日 題意: 第一行給你兩個正整數, 第一個代表下面會出現幾個字串,
Instructor: Ching-Chi Lin 林清池 助理教授
Reference, primitive, call by XXX 必也正名乎 誌謝 : 部份文字取於前輩 TAHO 的文章.
序列分析工具:MDDLogo 謝勝任 林宗慶 指導教授:李宗夷 教授.
Android Class vs. Jar 建國科技大學 資管系 饒瑞佶 2013/4 V1. 從 MyAndroidProject 專案改起 將 BMI_method.java 改寫成 class 方式 步驟 1 :在原 package 內新增一個 class.
1 Web of Science 利用指引 單元二 瀏覽與處理查詢結果. 2 瀏覽檢索結果 查出的結果,預設以時間排列, 使用者可改變結果的排列方式: 還可以依被引用次數、相關度、 第一作者、刊名、出版年等排序 回到前先查的結果畫面 點選想看資料的完整書目 本館訂購範圍的期刊 全文,便可直接連結.
: Boxes ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11003: Boxes 解題者:蔡欣燁 解題日期: 2007 年 3 月 19 日.
五小專案 黃詩晴 章乃云. 目錄 計算機 智慧盤 拼圖 記憶大挑戰 數學題庫 心得 參考文獻.
:New Land ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11871: New Land 解題者:施博修 解題日期: 2011 年 6 月 8 日 題意:國王有一個懶兒子,為了勞動兒子,他想了一個 辦法,令他在某天早上開始走路,直到太陽下山前,靠.
: OPENING DOORS ? 題組: Problem Set Archive with Online Judge 題號: 10606: OPENING DOORS 解題者:侯沛彣 解題日期: 2006 年 6 月 11 日 題意: - 某間學校有 N 個學生,每個學生都有自己的衣物櫃.
: ShellSort ★★☆☆☆ 題組: Problem D 題號: 10152: ShellSort 解題者:林一帆 解題日期: 2006 年 4 月 10 日 題意:烏龜王國的烏龜總是一隻一隻疊在一起。唯一改變烏龜位置 的方法為:一隻烏龜爬出他原來的位置,然後往上爬到最上方。給 你一堆烏龜原來排列的順序,以及我們想要的烏龜的排列順序,你.
1. 假設以下的敘述為一未提供 “ 捷徑計算 ” 能力的程式段,試用程 式設計的技巧,使此敘述經此改 寫的動作後,具有與 “ 捷徑計算 ” 之 處理方法相同之處理模式。 if and then E1 else E2 endif.
程式註解說明. 2 程式註解格式 塊狀註解 對檔案、 class 、 method 、資料結構、一段程式 …. 等程式區塊 做說明。 第一行的開頭必需為 “/*” 且沒有其他文字,最後一行的開頭 必需以 “*/” 做為結束,在中間每一行的開頭都必需是一個 “*” 。 單行註解 佔據一整行的說明。 以.
Chapter 07 低階程式語言.
JAVA 程式設計與資料結構 第十章 GUI Introdution III. File Chooser  File Chooser 是一個選擇檔案的圖形介面, 無論我們是要存檔還是要開啟檔案,使 用這個物件都會讓我們覺得容易且舒適。
資料結構實習-四.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
Introduction to pointers in C/C++. Pointers 特殊變數 存放變數在記憶體中的位址 MinGW C++ 中佔用 4 bytes 間接定址取執法 位址 指標變數 變數內容 變數.
IR 組員 : 資工 4A 王俊傑 資工 4B 陳國富 資工 4B 夏希璿.
Introduction to Java Programming Lecture 17 Abstract Classes & Interfaces.
24-6 設定開始與結束場景中的 程式 最後我們要替這個遊戲收個尾, 幫它把開始 的等待畫面跟結束畫面處理一下。
計算機概論 - 排序 1 排序 (Sorting) 李明山 編撰 ※手動換頁.
7 陣列與搜尋 7.1 陣列 一般資料變數 宣告一維陣列 起始一維陣列 7-4
: Happy Number ★ ? 題組: Problem Set Archive with Online Judge 題號: 10591: Happy Number 解題者:陳瀅文 解題日期: 2006 年 6 月 6 日 題意:判斷一個正整數 N 是否為 Happy Number.
: Fast and Easy Data Compressor ★★☆☆☆ 題組: Problem Set Archive with Online Judge 題號: 10043: Fast and Easy Data Compressor 解題者:葉貫中 解題日期: 2007 年 3.
String and character functions #include. ASCII table int a; (char)a  取 lower byte of a. char ach; (int)ach ascii number of ach. (int)space = 32 = 0x20.
: Little Red Riding Hood ★★★☆☆ 題組: Contest Volumes Archive with Online Judge 題號: 11067: Little Red Riding Hood 解題者:陳明凱 解題日期: 2008 年 3 月 14 日 題意:
: Problem A : MiniMice ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11411: Problem A : MiniMice 解題者:李重儀 解題日期: 2008 年 9 月 3 日 題意:簡單的說,題目中每一隻老鼠有一個編號.
第十章 再論結構. 指標與結構的關係 /* File name: ex10-1a.c */ #include int main() { struct student { char *name; int score; }; struct student st= {"Brian", 97}; struct.
: Multisets and Sequences ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 11023: Multisets and Sequences 解題者:葉貫中 解題日期: 2007 年 4 月 24 日 題意:在這個題目中,我們要定義.
:Nuts for nuts..Nuts for nuts.. ★★★★☆ 題組: Problem Set Archive with Online Judge 題號: 10944:Nuts for nuts.. 解題者:楊家豪 解題日期: 2006 年 2 月 題意: 給定兩個正整數 x,y.
從此處輸入帳號密碼登入到管理頁面. 點選進到檔案管理 點選「上傳檔案」上傳資料 點選瀏覽選擇電腦裡的檔案 可選擇公開或不公開 為平台上的資料夾 此處為檔案分類,可顯示在展示頁面上,若要參加 MY EG 競賽,做品一律上傳到 “ 98 MY EG Contest ” 點選此處確定上傳檔案.
資料結構實習-一 參數傳遞.
1 第 4 章 複 因 子 的 應 用複 因 子 的 應 用. 2 移動等額系列 並非 所謂移動系列,是指現值所在的時 間點並非 t = 0. 向 “0” 的左方移動或向 t = “0” 的右 方移動.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2008.
4 堆疊與佇列 4.1 前言 四種基本的資料結構 (可儲存資料的容器) 陣列 (Array)、串列(List): 最基本
: Problem G e-Coins ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 10306: Problem G e-Coins 解題者:陳瀅文 解題日期: 2006 年 5 月 2 日 題意:給定一個正整數 S (0
函式 Function Part.2 東海大學物理系‧資訊教育 施奇廷. 遞迴( Recursion ) 函式可以「呼叫自己」,這種動作稱為 「遞迴」 此程式的執行結果相當於陷入無窮迴圈, 無法停止(只能按 Ctrl-C ) 這給我們一個暗示:函式的遞迴呼叫可以 達到部分迴圈的效果.
JAVA 程式設計與資料結構 第二十章 Searching. Sequential Searching Sequential Searching 是最簡單的一種搜尋法,此演 算法可應用在 Array 或是 Linked List 此等資料結構。 Sequential Searching 的 worst-case.
演算法 8-1 最大數及最小數找法 8-2 排序 8-3 二元搜尋法.
Pointer and Array 指標 與 陣列 double *a, b[10]; char name[80], *np;
Windows Processing Design1 Chapter 1 C/C++ 概論 畫面輸出與鍵盤輸入 程式流程 程式流程的迴圈 函數的基礎 指標與陣列 字串 類別 利用 BCB 開發程式.
845: Gas Station Numbers ★★★ 題組: Problem Set Archive with Online Judge 題號: 845: Gas Station Numbers. 解題者:張維珊 解題日期: 2006 年 2 月 題意: 將輸入的數字,經過重新排列組合或旋轉數字,得到比原先的數字大,
資料結構實習-十 Binary Tree Traversal.
: Function Overloading ★★★☆☆ 題組: Problem Set Archive with Online Judge 題號: 11032:Function Overloading 解題者:許智祺 解題日期: 2007 年 5 月 8 日 題意:判對輸入之數字是否為.
組合語言與系統程式 軟體使用教學(中文詳細版).
Probability Distribution 機率分配 汪群超 12/12. 目的:產生具均等分配的數值 (Data) ,並以 『直方圖』的功能計算出數值在不同範圍內出現 的頻率,及繪製數值的分配圖,以反應出該 機率分配的特性。
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2009.
5 重複迴圈 5.1 增減運算符號 增量運算符號 減量運算符號
: Mini Cube ★★★★★ 題組: Problem Set Archive with Online Judge 題號: 11007: Mini Cube 解題者:郭峻維 解題日期: 2007 年 3 月 27 日 題意:找出 2x2x2 的 Rubik‘s cube 的最佳解。
Miscellanea Switch Bitwise operations ?,. break; continue; (example) (example) do { a = getc(stdin); if (a=='q') break; else if (a=='c') continue; n++;
-Artificial Neural Network- Matlab操作介紹 -以類神經網路BPN Model為例
Visual C++重點複習.
資料結構實習-六.
1 Introduction to Java Programming Lecture 2: Basics of Java Programming Spring 2010.
: SAM I AM ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11419: SAM I AM 解題者:李重儀 解題日期: 2008 年 9 月 11 日 題意: 簡單的說,就是一個長方形的廟裡面有敵人,然 後可以橫的方向開砲或縱向開砲,每次開砲可以.
第十三章 檔案. 檔案 I/O 的基本觀念 檔案 I/O 的流程 定義指向 FILE 結構的指標 開啟一檔案 呼叫檔案 I/O 庫存函數以進行檔案的處理 關閉檔案 FILE 結構 此結構宣告於 標頭檔中.
牽涉兩個變數的 Data Table 汪群超 11/1/98. Z=-X 2 +4X-Y 2 +6Y-7 觀察 Z 值變化的 X 範圍 觀察 Z 值變化的 Y 範圍.
: Finding Paths in Grid ★★★★☆ 題組: Contest Archive with Online Judge 題號: 11486: Finding Paths in Grid 解題者:李重儀 解題日期: 2008 年 10 月 14 日 題意:給一個 7 個 column.
幼兒行為觀察與記錄 第八章 事件取樣法.
第 1 章 PC 的基本構造. 本章提要 PC 系統簡介 80x86 系列 CPU 及其暫存器群 記憶體: Memory 80x86 的分節式記憶體管理 80x86 的 I/O 結構 學習組合語言的基本工具.
Text and Binary File Processing 程式設計 潘仁義 CCU COMM.
Text and Binary File Processing
Presentation transcript:

I/O FUNCTIONS 輸入 與 輸出

#include int fclose(FILE *); int feof(FILE *); int fflush(FILE *); int fgetc(FILE *); getchar(); char *fgets(char*, int, FILE*); gets(char*); FILE *fopen(char*, char*); int fprintf(FILE*, char*,…); printf(char*,…); int fputc(int, FILE*); putchar(int); int fputs(char*, FILE*); puts(char*); int fscanf(FILE*, char*, …); scanf(); sscanf();

fseek(FILE*fp, long offset, int origin) fread(char*str,int size, int count, FILE*fp) fwrite(char*str, int size, int count, FILE *fp) long ftell(FILE*fp) void rewind(FILE*fp) int remove(char*fname) int rename(char*oldname, char*newname)

Write to or read from a string sprintf(str, format, variables) 與 printf 相同, 但是輸出的目標是寫 到字串上, 而非 monitor. sscanf(str, format, variables) 與 scanf 相同, 但是從一個字串上讀取變數資料

FILE *fp; char str[80], name[10]; float r1, r2, r3; fp = fopen(“fname.txt”, “r”) fgets(str, (int)80, fp); sscanf(str,”%s %f %f %f”,name, &r1, &r2, &r3); 先讀一列資料到 str, 在從 str 中讀取 變數值 fgets(char*str, int n, FILE*fp) :從 fp 中讀取 n 個 bytes, 直到斷行或 end_of_file

Binary files– No text convertion FILE *fp; fp = fopen(file_name_str, mode_str); Mode_str “rb”: an existing binary file for read “wb”: a new binary file for write “rb+”: an existing binary file for read/write “wb+”: a new binary file for read/write 用途 : 執行檔, 隨意讀取的 data base 檔, 暫存檔

Conversion from unix-tex to dos- text (example) (example) fp1 = fopen(argv[1],"rb " ) fp2 = fopen(argv[2],"wb"); nc = counter = 0; while (!feof(fp1)) { achr = fgetc(fp1); if (achr == 255 ) break; if (achr == 10) { fputc((int)13, fp2); nc++; } fputc((int)achr, fp2); counter++; }

Store text data in binary mode typedef struct { int nd; char id[12], name[8]; float t1, t2, t3, avg; } STUDENT; void write_one_record(FILE *fp, STUDENT ss) { char *str; int rlen; rlen = sizeof(ss); str = (char*)&ss; fwrite(str, rlen, (int)1, fp); return; } example

ss.name ss.t1 ss.t2 ss.t3ss,avg ss.nd ss.id sizeof(STUDENT) = 40 char *str; str = (char*)&ss; fwrite(str, 40, 1 fp); fwrite(str, size, count, fp) char *str: 字串位址 int size: 要寫入的 byte 數 int count: 重複數次 FILE fp: 寫入檔案

Display contents of a data-base file STUDENT read_one_record(FILE *fp) { STUDENT ss; // 回傳的資料 int rlen; char *str; str = (char*)&ss; // 把 str 指向儲存位址 rlen = sizeof(ss); //record 長度 fread(str, rlen,(int)1, fp); // 讀取 data 到 str 指向的位址. return(ss); } // 回傳以後, ss 就可以按一般的 struct 處理. example

移動 file indicator 的位置 fseek(FIlE *fp, long int offset, int refer) offset: 相對移動的 byte 數目 refer: 參考點, 0 以 beginning 為參考點 SEEK_SET 1 以目前為參考點 SEEK_CUR 2 以 end_of_file 為參考點 SEEK_END fseek 可以移動超過 end_of_file 但不能在 biginning of file 之前

練習 Open binary file student.db (mode “rb”) 2.STUDENT 的結構 : { int nd; char id[12], name[8]; float t1, t2, t3, avg; } 3. 計算總 record 數目 totaln. 4. 等 user 輸入一個數目 n, 若 n totaln 結束. 5. 若 n >= 0, 則讀取並 display 第 n+1 個學生資料. 5. 重複 3-4 的步驟.

Counting total number of record rlen = sizeof(STUDENT); fseek(fp, (long)0, SEEK_END); totaln = (int)(ftell(fp)/rlen));

fseek(fp, bytes_to_seek, origin) 將 fp 的 indicator 移動到指定的 bytes 數, 移動以 origin 為計算起點 : Origin = 0, 以檔案 fp 的起始點作為原點 SEEK_SET Origin = 1, 以目前的 indicator 起始點作為原點 SEEK_CUR Origin = 2, 以檔案 fp 的最後作為原點 SEEK_END Moving to the end of file: fseek(fp, 0, SEEK_END);

long int ftell(fp) ftell(fp) 回傳一個 long int 為目前 indicator 的位置. 在 text mode 下, ftell 所傳回的數目意義難測, 但可以儲存下來, 給 fseek 用來回到某一特定位置.

int fread(address, size, count, fp); fread 從目前的 indicator 開始讀取 size 個 byte 的 data, 存到 address 所指定的位置. 這種讀取重覆 count 次. 讀完之後, fp 的 indicator 移動到讀完的下一個位置. fread 回傳讀入的 byte 數, 當讀數較少時, 可能碰到 eof.

fwrite(address, size, count, fp); fwrite 從 address 的位置讀取 size 個 byte 的 data, 寫入 indiactor 所的位置. 這種動作重覆 count 次. 寫完之後, fp 的 indicator 移動到的下一個位置. fwrite 回傳實際寫入的 byte 數.