c語言檔案讀寫操作有:1、讀寫檔案中字元的函數,程式碼為【int fgetc(FILE *stream)】;2、讀寫檔案中字串的函數,程式碼為【 int fputs(char *string,FILE *stream)】。
c語言檔案讀寫操作有:
1.檔案的開啟函數fopen()
檔案的開啟操作表示將給使用者指定的檔案在記憶體中分配一個FILE結構區,並將該結構的指標傳回給使用者程序,以後使用者程式就可用此FILE指標來實現對指定檔案的存取操作了。當使用開啟函數時,必須給出檔案名稱、檔案操作方式(讀、寫或讀寫),
如果該檔案名稱不存在,就意味著建立(只對寫入檔案而言,對讀取檔案則出錯),並將檔案指標指向檔案開頭。若已有一個同名文件存在,則刪除該文件,若無同名文件,則建立該文件,並將文件指針指向文件開頭。
fopen(char *filename,char *type);
其中*filename
是要開啟檔案的檔案名稱指針,一般用雙引號括起來的檔案名稱表示,也可使用雙反斜線隔開的路徑名稱。而*type
參數表示了對開啟檔案的操作方式。其可採用的操作方式如下:
意義"r" 打開,唯讀;
"w" 打開,檔案指標指向頭,只寫;
"a" 打開,指向檔案尾,在已存在檔案中追加;
"rb" 開啟一個二進位文件,唯讀;
"wb" 開啟一個二進位文件,只寫;
"ab" 開啟一個二進位文件,進行追加;
"r " 以讀取/寫入方式開啟一個已存在的檔案;
"w " 以讀取/寫入方式建立一個新的文字檔案;
"a " 以讀取/寫入方式開啟一個檔案檔案進行追加;
"rb " 以讀取/寫入方式開啟一個二進位檔案;
"wb " 以讀取/寫入方式建立一個新的二進位檔案;
"ab " 以讀/寫方式開啟一個二進位檔案進行追加;
當用fopen()成功的開啟一個檔案時,該函數會傳回一個FILE指針,如果檔案開啟失敗,將會傳回一個NULL指標。
2.關閉檔案函數fclose()
檔案操作完成後,必須要用fclose()函數關閉,這是因為開啟的檔案寫入時,若檔案緩衝區的空間未被寫入的內容填滿,這些內容不會寫入到開啟的檔案中去而遺失。只有在對開啟的文件進行關閉操作時,停留在文件緩衝區的內容才能寫到該文件中去,從而使文件完整。
再者一旦關閉了文件,該文件對應的FILE結構將被釋放,從而使關閉的文件得到保護,因為這時對該文件的訪問操作將不會進行。文件的關閉也意味著釋放了該文件的緩衝區。
int fclose(FILE *stream);
它表示該函數將關閉FILE指向應的文件,並傳回一個整數值。若成功地關閉了文件,則傳回一個0值,否則傳回一個非0值。
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; int main() { FILE *fp; // 头文件#include <stdio.h> if((fp=fopen("123.txt","w"))==NULL) { printf("file cannot open \n"); //exit(0); 头文件#include <stdlib.h> //exit结束程序,一般0为正常推出,其它数字为异常,其对应的错误可以自己指定。 } else printf("file opened for writing \n"); if(fclose(fp)!=0) printf("file cannot be closed \n"); else printf("file is now closed \n"); return 0; }
3.檔案的讀寫
(1).讀寫檔案中字元的函數(一次只讀寫檔案中的一個字元):
int fgetc(FILE *stream); int getchar(void); int fputc(int ch,FILE *stream); int putchar(int ch); int getc(FILE *stream); int putc(int ch,FILE *stream);
fgetc()
函數將把由流指標指向的檔案中的一個字元讀出,例如: ch=fgetc(fp); 將把流指標fp指向的檔案中的一個字元讀出,並賦給ch,當執行fgetc()函數時,若當時檔案指標指到檔案尾,即遇到檔案結束標誌EOF(其對應值為-1),則該函數傳回一個-1給ch ,在程式中常用檢查該函數傳回值是否為-1來判斷是否已讀到文件尾,從而決定是否繼續。
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; int main() { FILE *fp; char ch; if((fp=fopen("123.txt","r"))==NULL) printf("file cannot open \n"); else printf("file opened for writing \n"); while((ch=fgetc(fp))!=EOF) fputc(ch,stdout); //这里是输出到屏幕 if(fclose(fp)!=0) printf("file cannot be closed \n"); else printf("file is now closed \n"); return 0; }
該程式以唯讀方式開啟123.txt文件,在執行while循環時,文件指標每循環一次後移一個字元位置。用fgetc()函數將檔案指標指定的字元讀到ch變數中,然後用fputc()函數在螢幕上顯示,當讀到檔案結束標誌EOF時,關閉該檔案。上面的程式用到了fputc()函數,該函數將字元變數ch的值寫到流指標指定的檔案中去,由於流指標用的是標準輸出(顯示器)的FILE指標stdout,故讀出的字元將在顯示器上顯示。又例如: fputc(ch,fp); 此函數執行結構,將把ch表示的字元送到流指標fp指向的檔案中去。
在TC中,putc()等價於fputc(),getc()等價於fgetc()。 putchar(c)相當於fputc(c,stdout);getchar()相當於fgetc(stdin)。請注意,這裡使用char ch,其實是不科學的,因為最後判斷結束標誌時,是看ch!=EOF,而EOF的值為-1,這顯然和char是不能比較的。所以,某些使用,我們都定義成int ch
。
#include <iostream> #include <stdio.h> #include <stdlib.h> using namespace std; int main() { FILE *fp; if((fp=fopen("123.txt","a"))==NULL) printf("file cannot open \n"); else printf("file opened for writing \n"); char ch='e'; fputc(ch,fp); //输入到文件中 if(fclose(fp)!=0) printf("file cannot be closed \n"); else printf("file is now closed \n"); return 0; }
(2).讀寫檔案中字串的函數
char *fgets(char *string,int n,FILE *stream); char *gets(char *s); int fprintf(FILE *stream,char *format,variable-list); int fputs(char *string,FILE *stream); char *puts(char *s); int fscanf(FILE *stream,char *format,variable-list);
其中fgets()函数将把由流指针指定的文件中n-1个字符,读到由指针string指向的字符数组中去,例如: fgets(buffer,9,fp); 将把fp指向的文件中的8个字符读到buffer内存区,buffer可以是定义的字符数组,也可以是动态分配的内存区。
注意,fgets()函数读到'/n'就停止,而不管是否达到数目要求。同时在读取字符串的最后加上'/0'。 fgets()函数执行完以后,返回一个指向该串的指针。如果读到文件尾或出错,则均返回一个空指针NULL,所以长用feof()函数来测定是否到了文件尾或者是ferror()函数来测试是否出错,
检测是否已到文件尾,是返回真,否则返回0,其原型是int feof(FILE *stream);
例:if(feof(fp))printf("已到文件尾");
原型是int ferror(FILE *stream);
返回流最近的错误代码,可用clearerr()来清除它,clearerr()的原型是void clearerr(FILE *stream);
例:printf("%d",ferror(fp));
例如下面的程序用fgets()函数读test.txt文件中的第一行并显示出来:
#include "stdio.h" int main() { FILE *fp; char str[128]; if((fp=fopen("123.txt","r"))==NULL) { printf("cannot open file/n"); exit(1); } while(!feof(fp)) { if(fgets(str,128,fp)!=NULL) printf("%s",str); } fclose(fp); }
相关学习推荐:C视频教程
以上是c語言檔案讀寫操作有哪些?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

C#.NET的未來趨勢主要集中在雲計算、微服務、AI和機器學習集成以及跨平台開發三個方面。 1)雲計算和微服務:C#.NET通過Azure平台優化雲環境表現,支持構建高效微服務架構。 2)AI和機器學習集成:借助ML.NET庫,C#開發者可在應用中嵌入機器學習模型,推動智能化應用發展。 3)跨平台開發:通過.NETCore和.NET5 ,C#應用可在Windows、Linux和macOS上運行,擴展部署範圍。

C#.NET開發的最新動態和最佳實踐包括:1.異步編程提高應用響應性,使用async和await關鍵字簡化非阻塞代碼;2.LINQ提供強大查詢功能,通過延遲執行和表達式樹高效操作數據;3.性能優化建議包括使用異步編程、優化LINQ查詢、合理管理內存、提升代碼可讀性和維護性、以及編寫單元測試。

如何利用.NET構建應用?使用.NET構建應用可以通過以下步驟實現:1)了解.NET基礎知識,包括C#語言和跨平台開發支持;2)學習核心概念,如.NET生態系統的組件和工作原理;3)掌握基本和高級用法,從簡單控制台應用到復雜的WebAPI和數據庫操作;4)熟悉常見錯誤與調試技巧,如配置和數據庫連接問題;5)應用性能優化與最佳實踐,如異步編程和緩存。

C#在企業級應用、遊戲開發、移動應用和Web開發中均有廣泛應用。 1)在企業級應用中,C#常用於ASP.NETCore開發WebAPI。 2)在遊戲開發中,C#與Unity引擎結合,實現角色控制等功能。 3)C#支持多態性和異步編程,提高代碼靈活性和應用性能。

C#和.NET適用於Web、桌面和移動開發。 1)在Web開發中,ASP.NETCore支持跨平台開發。 2)桌面開發使用WPF和WinForms,適用於不同需求。 3)移動開發通過Xamarin實現跨平台應用。

C#.NET生態系統提供了豐富的框架和庫,幫助開發者高效構建應用。 1.ASP.NETCore用於構建高性能Web應用,2.EntityFrameworkCore用於數據庫操作。通過理解這些工具的使用和最佳實踐,開發者可以提高應用的質量和性能。

如何將C#.NET應用部署到Azure或AWS?答案是使用AzureAppService和AWSElasticBeanstalk。 1.在Azure上,使用AzureAppService和AzurePipelines自動化部署。 2.在AWS上,使用AmazonElasticBeanstalk和AWSLambda實現部署和無服務器計算。

C#和.NET的結合為開發者提供了強大的編程環境。 1)C#支持多態性和異步編程,2).NET提供跨平台能力和並發處理機制,這使得它們在桌面、Web和移動應用開發中廣泛應用。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境