File(檔案處理) 學習目標:開檔、讀檔、更新檔與關閉檔案.

Slides:



Advertisements
Similar presentations
補充: Input from a text file
Advertisements

第 5 章 文件I/O操作.
C程序设计 第10章 文 件 主讲教师: 鲁 萍 西安建筑科技大学 理学院.
第十三章 文件.
複習 struct score_Type{ int chinese,english; }; struct my_Type{
Linked List Operations
C File System.
计算概论 第二十一讲 文件操作 北京大学信息学院.
適用於多選一 可減少if 與 else配對混淆的錯誤.
第10章 文件操作.
第十一章 文件 文件概述 文件操作 文件操作实例 本章小结 作业: 练习:
程序讲解 第一题: 将指定文件的m行到n行字符写到显示屏上,m和n值从键盘输入。 运行时输入及结果: please enter m,n:
Introduction to the C Programming Language
Introduction to the C Programming Language
第10章 文件操作.
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
C 語言簡介 - 2.
NO.3.1 SOPC技术 第5章 Nios II 系统的外围设备.
11.1 文件的基本概念 11.2 文件的打开与关闭 11.3 文件的顺序读写 11.4 文件的随机读写 11.5 文件检测
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
Introduction to the C Programming Language
第十二章 文件 12.1 C文件概述 文件:存储在外部介质上数据的集合,是操作系统数据管理的单位 文件分类 按文件的逻辑结构: 按存储介质:
第四章 C 语言中的输入和输出.
fp=fopen("CD2.dat","wb"); fwrite(&min,8,1,fp); fclose(fp);
第4章 MATLAB文件操作 4.1 文件的打开与关闭 4.2 文件的读写操作 4.3 数据文件定位.
檔案 將資料存入磁碟或由磁碟取出資料的方式, 稱為檔案存取處理。 C語言的檔案處理 C++語言的檔案處理.
程式設計 博碩文化出版發行.
第九章 文件 程序数据标准输入输出设备 程序数据文件 数据流和文件 文件的打开和关闭 文件读写函数.
THE C PROGRAMMING LANGUAGE
第10章 文件操作.
字符串和字符数组 字符串的输入和输出 字符串的基本操作
第10章 檔案與資料夾處理 10-1 C語言的檔案輸入與輸出 10-2 文字檔案的讀寫 10-3 二進位檔案的讀寫
ACM程序员大赛讲座 _____C语言程序设计要点 讲授人:王敬华.
Linux 文件操作——系统调用和标准 IO 库
第5章 文件.
第9章 文件操作 文件 使用文件的目的 操作系统管理数据的基本单位 存储在外存储器上的数据的集合
計數式重複敘述 for 迴圈 P
第5讲 结构化程序设计(Part II) 周水庚 2018年10月11日.
研讨课4 文件操作.
第七章 函数及变量存贮类型 7.1 函数基础与C程序结构 7.2 函数的定义和声明 7.3 函数的调用 7.4 函数的嵌套与递归
第4章 顺序程序设计.
第0章作业: 教材P12-练习与实践 1.写出用符号’*’输出描绘汉字”大”的流程图。
一、文件的基本概念 第十三章 文 件 所谓“文件”是指一组相关数据的有序集合。 这个数据集有一
C语言概述 第一章.
第7章 输入/输出流 文件和I/O流概述 标准I/O流的对象及其成员函数 文件流.
第3章 變數、算術運算、 數學函數及輸入輸出.
實習十 開讀檔練習.
C標準輸出入函數庫 與 作業系統.
輸出與輸入(I/O).
本节内容 文件读写 视频提供:昆山爱达人信息技术有限公司.
第7章 程序的结构 四、生存期与存储属性 五、extern关键字与外部连接属性 六、static关键字与内部连接属性.
第一章 C语言概述 目录 什么是语言、程序 C语言的历史与发展 C语言的书写形式与程序结构 运行C语言的步骤与方法
第二章 类型、对象、运算符和表达式.
C/C++基礎程式設計班 C++: 物件的使用、參考、重載函式 講師:林業峻 CSIE, NTU 3/28, 2015.
第四章 C 语言中的输入和输出.
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
第13章 文 件.
Introduction to the C Programming Language
C 程式設計— 檔案處理 台大資訊工程學系 資訊系統訓練班.
結構、檔案處理(Structure, File)
第七章 文件 7.1 文件的基本概念 7.2 文件类型指针 7.3 文件的打开与关闭 7.4 文件的读/写 7.5 文件的随机读/写
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
2018 Operating Systems 作業系統實習 助教:林欣穎 實驗室:720A Lab2.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
C语言程序设计 第13章 文件操作.
陣列與檔案處理 授課:張朝麟 日期:2009/3/11.
Q6. 某學校將學生的電話號碼存貯在一個文字檔'telist.txt'。 在這交字檔中,每行有14個字符,代表學生班別、班號和電話號碼,
Introduction to the C Programming Language
C语言基础学习 从外行到入门.
Presentation transcript:

File(檔案處理) 學習目標:開檔、讀檔、更新檔與關閉檔案

大綱 檔案的觀念 檔案的處理方式 檔案的函數使用:fopen …

檔案的觀念 檔案儲存的方式可以分為兩種: 文字檔 以ASCII碼儲存,每個字元皆佔有1個位元組。 若將數值182956存在文字檔中,會當成6個字元來存檔 49 56 50 57 53 54 以 ASCII 碼儲存 二進位檔 以二進位的格式儲存,如影像檔或執行檔。 將整數182956以二進位的格式來存檔時,會以其二進位的值來儲存 101100101010101100

檔案的處理方式 程式在執行的時候,會需要一些額外的記憶體來存放資料,以提高程式執行的效率,此暫時存放的區域就稱為緩衝區(buffer)。 有緩衝區: fopen("檔名", "存取模式"); 無緩衝區 open("檔名",開啟模式,存取屬性);

fopen函數 在使用檔案之前,必須先開啟檔案。 可利用標準輸入/輸出(standard I/O)函數 fopen 來開啟檔案。 範例: fopen 函數會回傳一個 FILE 指標 範例: FILE *fp; 必須宣告一個指向檔案的指標 fp = fopen("phone" , "r"); 將 fp 指標指向 phone 檔案 利用fopen函數開啟檔案時,若開啟失敗,會回傳 NULL

fopen函數 檔案的存取模式如下表: 代碼 說明 r w a 存取模式 開啟檔案以供讀取。 讀取資料 檔案必須存在,否則會開啟失敗。 寫入資料 w 開啟檔案以供寫入。 原有檔案若存在,則內容會被覆蓋掉。 若檔案不存在,則系統會自動產生此檔案。 附加於檔案之後 a 開啟一個檔案,可將資料寫入此檔案的末端。 若檔案不存在,系統會自動產生。

開檔範例 #include<stdio.h> void main() { FILE *fp ; /*宣告指向檔案的指標fp*/ fp = fopen ("C:\\abc.txt " , "r" ) ; if (fp = = NULL) /*判斷開檔是否成功*/ printf("檔案開啟失敗\n"); else printf("檔案開啟成功\n"); system("pause"); } 由於反斜線是C語言中的控制字元,因此必須 將路徑中有反斜線(\)的部分再加一個反斜線。

存取檔案的常用函數(1) 函數功能 格式與說明 開啟檔案 fopen()傳回值為檔案指標或NULL(開檔失敗)。 關閉檔案 int fclose(FILE *fptr);關閉由fptr指向的檔案。 讀取字元 int getc(FILE *fptr);由fptr所指向的檔案一次讀取一個字元,傳回值字元。若遇到檔案結尾,會傳回EOF。 寫入字元 int putc(int ch, FILE *fptr);將字元 ch寫入由fptr所指向的檔案。

讀檔範例 #include<stdio.h> void main() { FILE *fptr; char ch; int count=0; fptr = fopen("c:\\test.txt" , "r"); if( fptr != NULL) /*開檔成功*/ while((ch = getc(fptr)) !=EOF ) /*判斷是否到達檔尾*/ printf("%c",ch); count++; //一次印出一個字元 } fclose(fptr); //關閉檔案 printf("\n 共有 %d 字元\n",count); else printf("檔案開啟失敗!! "); system("pause"); /*ch是用來接收讀取的字元*/ /*count用來計算檔案的字元數*/

存取檔案的常用函數(2) 函數功能 格式與說明 寫入字元 int fputc(int ch, FILE *fptr); fputc()函數返回一個向檔案所寫字元的值,此時寫操作成功,否則返回EOF(文件結束結束其值為-1,在stdio.h中定義)表示寫操作錯誤。 寫入字串 int fputs(const char *str, FILE *fptr); 將字串 str 寫入 fptr 所指向的檔案。 寫入檔案 int fprintf(FILE *fptr, char *format, <variable-list>); 將資料以規定格式寫入檔案內 Ex: fprintf(fp,"\2: The average is %6.2f",average); 檢查檔案是否結束 int feof(FILE *fptr); 檢查fptr所指向的檔案是否已讀取到檔案結束的位置。 若尚未到達檔尾,則傳回0。

存取檔案的常用函數(3) 函數功能 格式與說明 讀取字元 int fgetc(FILE *fptr); 讀取字串 fgetc()函數返回檔案目前位置的一個字元,讀取錯誤時傳回EOF。 讀取字串 char *fgets(char *str, int maxchar, FILE *fptr); 第一個參數:字元陣列名稱 第二個參數:陣列大小 第三個參數:指向檔案的指標 讀取檔案 int fscanf(FILE *fptr, char *format, <address-list>); fscanf()函數的用法與scanf()函數相似,只是它是從文件中讀到資訊。 fscanf()函數的返回值為EOF(即-1),表明讀取資料錯誤。

寫檔範例 #include<stdio.h> void main() { FILE *fp; int c; fp = fopen("c:\\hello.txt","w"); while((c=getchar())!=EOF) fputc(c , fp); /*將字元c輸出到fp所指的檔案*/ fclose(fp); } /*判斷是否已輸入完畢*/

將檔案的內容列於螢幕 #include<stdio.h> void main() { int c, r; char filename[20]; FILE *fp; printf("please input a filename:"); scanf("%s",filename); if( (fp=fopen(filename, "r"))==NULL) /*判斷開檔是否成功*/ printf("Cannot open the file!!\n"); else while((c=fgetc(fp))!=EOF) /*判斷是否到達檔尾*/ putchar(c); /*將字元c列於螢幕上*/ if((r=fclose(fp))!=0) /*判斷關檔是否成功*/ printf("Cannot close file!\n"); } system("pause");

fgets函數應用 #include<stdio.h> void main() { int r , MAX=80; char str[MAX],*msg; FILE *fptr=fopen("C:\\output.txt","r"); if(fptr==NULL) printf("檔案開啟失敗\n"); else while(!feof(fptr)) msg=fgets(str,MAX,fptr); printf("%s",msg); } if((r = fclose(fptr))!=0) printf("Cannot close file!\n"); } system("pause");

存取檔案的常用函數(4) 函數功能 格式與說明 隨機讀取 int fread(void *buf, int size, int count, FILE *fptr); fread()函數是從檔案中讀count個欄位, 每個欄位長度為size個位元群組, 並把它們存放到buf指標所指的緩衝器中。 隨機寫入 int fwrite(void *buf, int size, int count, FILE *fptr); fwrite()函數是把buf指標所指的緩衝器中, 長度為size個位元群組的count個字段寫到fptr指向的檔案中去。 指定文件位置 int fseek (FILE *fptr, long offset, int fromwhere); fseek()函數的作用是將檔案的位置指標設定到從fromwhere開始的第offset位元群組的位置上 文件位置指標起始計算位置fromwher: SEEK_SET 0 從檔案開頭 SEEK_CUR 1 從檔案指標的現行位置 SEEK_END 2 從檔案末尾

Water Restrictions to Return to Taoyuan Area 練習 將以下這篇英文文章的字母全部改成小寫字母。 Water Restrictions to Return to Taoyuan Area WATER RESTRICTIONS ARE RETURNING TO THE TAOYUAN AREA. WATER OFFICIALS SAY STARTING NEXT WEEK... THEY WILL START REMOVING MUD AND SEDIMENT FROM THE SHI-MEN RESERVOIR. THE CLEAN UP OPERATIONS WILL INCREASE THE WATER'S TURBIDITY, AND THEREBY DECREASE OUTPUT FROM A NEARBY WATER PURIFICATION PLANT. TO MAKE THE WATER RESTRICTIONS MORE FAIR, THEY WILL IMPOSED ON A ROTATING BASIS. OVER THE PAST FOUR DECADES... NEARLY 56-MILLION CUBIC METERS OF SEDIMENT HAVE ACCUMULATED IN THE RESERVOIR... WITH NEARLY 35-PERCENT OF THAT TOTAL FROM TYPHOON AERE ALONE.