C語言【文件操作】

来源:https://www.cnblogs.com/wangsiyaoa/archive/2023/11/26/17857889.html
-Advertisement-
Play Games

Jinja2,由Flask框架的創作者開發,是一款功能豐富的模板引擎,以其完整的Unicode支持、靈活性、高效性和安全性而備受推崇。最初受Django模板引擎啟發,Jinja2為Flask提供了強大的模板支持,後來也成為其他項目的首選。在本文中,我們將深入探討Jinja2的特性、語法以及如何在Fl... ...


C語言【文件操作】

1、輸入/輸出流的定義。

​ C語言中,文件輸入/輸出以流的方式進行。

​ 讀還是寫,輸入還是輸出,是站在記憶體(程式)的角度來看的。從程式(記憶體)向 數據源(如文件、網路等)傳遞數據的過程叫做數據,讀數據使用的路徑叫做輸入流,一般讀數據的過程是一個解碼的過程;從數據源(如文件、網路等)向 記憶體(程式)傳遞數據的過程叫做數據,寫數據使用的路徑叫做輸出流,一般寫數據的過程是一個編碼的過程。

​ 編碼和解碼使用的字元集不一致時會出現亂碼。

2、標準輸入輸出(一般指從鍵盤輸入,從控制台輸出)
scanf(...) 和 printf(...) 略
// getchar 用於從標準輸入流(通常是鍵盤)讀取一個字元。以下是其函數定義:
int getchar(void);	// 返回一個數值(讀取的字元的ASCII碼),用變數接收處理

// putchar 用於將一個字元寫入到標準輸出流(通常是控制台)。以下是其函數定義:
int putchar(int character);	// 返回一個整數值(寫入字元的ASCII碼)。參數為寫入字元。
// gets 用於從標準輸入流讀取一個字元串。
char *gets(char *str);	// 返回值和參數都是讀取到的那個字元串。

// puts 用於將參數輸出到控制台。
int puts(const char *str);	// 返回成功輸出的字元個數。參數為要輸出的字元串。
// 有些函數主要作用是操作文件的(比如從文件中讀數據),改變一下參數,也可成為標準輸入輸出(比如從控制臺中拿數據),比如下麵這個函數:
fgets(指針, 長度, stdin);	// 第一個參數存數據,長度,stdin指定為操作對象為控制台。
3、文件讀寫

​ 以下的文件操作函數都在<stdio.h>中

/** 
*		打開文件
*	返回一個操作文件的指針。	
*	第一個參數為要操作的文件路徑及文件名。
*		相對路徑和絕對路徑知識略。win路徑分隔符為/或\\(轉義),Unix為/,當前目錄下可以加./也可不加。
*	第二個參數為模式。如"r" ----- 這個模式是個字元串。
*		r只讀。w清空原文件並寫入。a追加。b二進位。+為省略r和w。(b和+不能單獨使用)
*		組合有:rb、wb、ab、r+、w+、a+、rb+、r+b、wb+、w+b、ab+、a+b
*		r/r+不創建新文件,文件不存在時不能正確讀取; 寫文件時,如果目錄不存在則報錯
*		使用w時,未關閉流繼續寫則為追加。
*/
FILE *fopen(const char *filename, const char *mode);	
/* 
	寫文件
*/

// 第一種。一次寫一個字元。
int fputc(int character, FILE *stream);	// 成功返回寫入字元的ASCII碼;失敗返回EOF,即-1

// 第二種。寫入字元串。第一個參數為要寫入的字元串;第二個參數為文件指針。
int fputs(const char *str, FILE *stream); // 成功返回寫入的字元個數;失敗返回EOF,即-1

// 第三種。第一個參數為文件指針;第二個參數為帶占位符的字元串;...為可變參。
int fprintf(FILE *stream, const char *format, ...);	//成功返回寫入字元個數;失敗返回EOF,即-1
/*
	讀文件
*/

// 第一種。讀一個字元。
int fgetc(FILE *stream);	// 返回讀取字元的ASCII碼。失敗返回EOF,即-1
// 第二種。讀一個字元串。之前介紹過它的讀取控制台的數據。第二個參數為個數;第三個參數為文件指針或指定控制台讀
char *fgets(char *str, int num, FILE *stream);	// 返回值和第一個參數都是讀取到的字元串。失敗返回NULL。
// 第三種。
int fscanf(FILE *stream, const char *format, ...);
fscanf(file, "%s %s %d", msg1, msg2, &num);	// 讀取到後面的變數中。占位符之間的空格表示文件中的空格或換行。
union {
    int a;
    int b;
} *p, u;
p = &u;	// 對於自定義數據類型來說,下麵要使用指針時,必須這樣指向一下。
const int *p;	// p可改變指向,*p不可改變
int const *p;	// p可改變指向,*p不可改變
int * const p;	// p不可改變指向,*p可改變
cosnt int * const p;	// p不可改變指向,*p也不可改變
// 簡單來說,p前的const把p給鎖定了,*前的const把*p給鎖定了,都有則都鎖定。
// int 和 const 緊挨著時,他倆可以交換位置。

​ 在vscode中,讓編譯出的可執行文件在控制台輸出且編碼方式改為GBK編碼的方式為:task.json文件中的args屬性中添加:"-fexec-charset=gbk";在lauch.json文件中修改"configurations"屬性第一個數組的“externalconsole”屬性改為true。

​ getchar()會吃掉'\n',他就相當於scanf("%c", 變數); 所以有時需要使用兩個getchar()才可以使控制台輸入完後停留。

​ scanf("%d\n", 變數); 它不吃回車或換行是因為它不是%c。如果它在getchar()前,它前面如果還有輸入,輸入中如果按了回車它也不吃,它後面的getchar()也吃不掉,回車就被消耗掉了。

#include<stdlib.h>

int main(){
    system("這裡面可以填寫cmd的命令");
    return 0;
}

case中的break是跳出switch;if中的break是跳出這層迴圈。

註意下麵代碼中的知識點

char *p = "hello";	 // 這個hello是個字面量,不可更改
*(p+2) = 'a';   	//報錯

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這是一本比較冷門的書《設計規則:模塊化的力量》,雖然豆瓣上只有58個評價,但是確實能學到很多東西。 這本書對我非常深遠。不是是投資,創業,還是其他領域,模塊化思想都能幫上你。這本書告訴我們生萬物的規則。 書籍電子版PDF(建議及時保存,避免被和諧):https://pan.quark.cn/s/aa ...
  • 如果在IT行業的時間夠長的話,可能還記得大約10幾年前,設計模式風靡一時的時候,有過一段反 "if" 的運動。 所謂的反"if"運動,其實是誇大了"if"語句帶來的問題,比如當時提出的問題有: 代碼不好維護,特別是if或者else中的代碼比較多的時候 if和 else if分支太多的時候,代碼難以閱 ...
  • 本文首發於公眾號:Hunter後端 原文鏈接:Django筆記四十三之使用uWSGI部署Django系統 目前部署 Django 的方式一般來說是使用 Nginx + uWSGI + Django 來實現。 處理流程是,當一個請求發送過來會先經過 Nginx,如果是靜態文件請求,Nginx 這一層直 ...
  • 在導入包方面,兩者都使用import語句,但是Python沒有類路徑的概念,直接使用文件名來導入模塊。我們還討論了自定義模塊的創建和使用,以及在不同目錄下如何組織代碼結構。此外,我們介紹了一些常用的Python模塊,包括time、datetime、json、os和sys,它們在開發中非常實用。希望今... ...
  • 前言 玩SpringCloud之前最好懂SpringBoot,別搞撐死駱駝的事。Servlet整一下變成Spring;SSM封裝、加入東西就變為SpringBoot;SpringBoot再封裝、加入東西就變為SpringCloud 架構的演進 單體應用架構 單體架構:表示層、業務邏輯層和數據訪問層即 ...
  • 在今天的課上,我們深入討論了封裝、反射和單例模式這幾個重要的概念。我不想過多地贅述它們的細節,但是請大家務必記住它們的基本語法規則,因為這也是面向對象章節的結束。我希望大家能夠牢牢掌握這些知識點,為未來的學習打下堅實的基礎。 ...
  • 在Web應用中,表單處理是一個基本而常見的任務。Python的WTForms庫通過提供表單的結構、驗證和渲染等功能,簡化了表單的處理流程。與此同時,Flask的擴展Flask-WTF更進一步地整合了WTForms,為開發者提供了更便捷、靈活的表單處理方式。Flask-WTF是建立在WTForms之上... ...
  • 1 簡介 谷歌文檔是一種協作文檔編輯服務。 協作文檔編輯服務可以通過兩種方式設計: 設計為C/S架構的集中式設施,為所有用戶提供文檔編輯服務 使用點對點技術設計,以便在單個文檔上協作 大多數商業解決方案側重於客戶端服務體繫結構,以實現更精細的控制。因此,我們將關註使用客戶端服務體繫結構設計服務。讓我 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...